通过值传递
Passing this by value
愚蠢的问题:通过值传递这个值的最佳方式是什么?
背景:让我们使用汽车和汽车选项。我曾经有过福特(FordOptions)、本田(HondaOptions)这样的建设者。所有汽车来源于Car,所有选项来源于CarOptions。我曾经有一个汽车工厂,它传递一个指向CarOption的指针,检查类型,生产合适的汽车,并返回一个指向通用汽车的指针。
我现在已经改变了这一点,使CarOption有一个返回汽车的虚拟ProduceCar,每个汽车选项都实现其特定的生产。因此,当我得到一个指向汽车选项的通用指针时,我只需调用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
指向的对象的引用,然后可以按照您的意愿传递该引用。
如果您只想通过值或引用路径this
,只需使用*this
:
return new Ford(*this);
我相信您想要取消引用"this"指针。为此,请将*发送给您的联系人。
所以您有一个CarOption&你认为这实际上是一个FordOption&听起来像是dynamic_cast
操作员的工作。
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 当值传递给C++中的运算符重载函数时会发生什么
- 如何将非可变参数值传递给 fmt::format?
- 将 qml 项目值传递给 cpp 后如何与它们进行交互?
- NDK:将文本字段值传递给 c++ 字符串
- 如何将值传递给 lambda 函数
- 如何在C++中将std::string值传递给RegSetValueEx()
- 如何将 c ++ 变量的值传递给 hadoop HDFS 的 bash 系统命令?
- C++ 通过参数将值传递给 char 数组
- 如何将值传递给MFC消息映射函数on_command
- 使用JNI将长值传递给Java
- 如何在不使用 Argv 和 Argc 的情况下将 Sum 值传递给 C++ 程序
- C++ 将值传递给 fStream
- 如何将函数中的多个值传递给C++中的不同函数
- 将多个解析值传递给 addPositionalArgument 函数
- C++为什么将左值传递给move构造函数对模板有效
- 一种自动检测对象的方法,该方法通过值传递给c++中的函数
- 将值传递给main(int,char**)
- 将大于long类型的最大值的值传递给C中的fseek
- 将值传递给atexit