将其传递给值

问题描述

| 愚蠢的问题:通过价值传递最佳方法是什么? 背景:让我们使用汽车和汽车选择。我曾经有诸如Ford(FordOptions),Honda(HondaOptions)之类的构造函数。所有汽车均来自Car,所有选项均来自CarOptions。我曾经有一个汽车工厂,该工厂被传递一个指向CarOption的指针,检查类型,产生合适的汽车,并返回一个指向通用Car的指针。 现在,我已对此进行了更改,以便CarOption具有一个虚拟的ProduceCar来返回Car,并且每个单独的car选项都实现其特定的生产。因此,当我获得指向汽车选项的通用指针时,只需调用CarOptions.ProduceCar并获得指向汽车的通用指针即可。 一切都很好,除了在实现FordOption.ProduceCar之外,我需要将FordOption实例传递给Ford构造函数。我可以通过传递\“ this \”并更改Ford的构造函数来接受指向FordOptions而不是FordOptions的指针来实现。但是,我希望按值或至少通过引用采用FordOptions,但这样做却很困难。 我敢打赌,答案很长。谢谢。     

解决方法

您只需要解除对
this
指针的引用即可...根据所调用的方法,您可以传递一个引用(如示例中所示)或按值
Ford::Ford(const FordOption &o) {}

Ford FordOption::produceCar() {
   return Ford(*this); // <-- Dereference this
}
    ,
this
是常规旧指针。因此,
*this
会生成对对象
this
指向的引用,然后可以根据需要传递该引用。     ,如果您要做的只是按值或引用来指向ѭ0path,只需使用
*this
return new Ford(*this);
    ,我相信您想取消引用\'this \'指针。为此,请将* this发送给您的监督者。     ,所以您有一个CarOption&,您认为它实际上是FordOption&?对于
dynamic_cast
运算符来说,这听起来像是一项工作。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...