微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将其传递给值

如何解决将其传递给值

| 愚蠢的问题:通过价值传递最佳方法是什么? 背景:让我们使用汽车和汽车选择。我曾经有诸如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
运算符来说,这听起来像是一项工作。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。