【问题标题】:How to pass derived object as parent object in C++? [duplicate]如何在 C++ 中将派生对象作为父对象传递? [复制]
【发布时间】:2014-10-07 09:18:39
【问题描述】:

我正在使用核心 OOP 模型。 我遇到了一些问题。

使用“this”关键字。这是我想要实现的示例代码。

class equation {
// some properties
};
class equationSolver{
 public:
    static void method1(equation eq, double dt);
}
class simpleMotion : public equation{};
class DragProjectile : public simpleMotion{
void updateVariables(double time){
    equationSolver::method1(this, time); // I am getting error cannot convert 
    // "DragProjectile" to "equation"
}

如果您能提供帮助,我将非常高兴。提前致谢

【问题讨论】:

  • method1 不是静态的。这应该如何工作?
  • 按值传递对象参数时不能得到多态性。要么通过引用传递,要么传递对象的地址。
  • 请粘贴编译器的确切文字错误消息。
  • 抱歉它是静态的,我只是错过了它
  • 你第一次问这个问题时已经回答了。

标签: c++ oop inheritance


【解决方案1】:

您需要传递*this,因为您的方法按值采用equation。顺便说一句,您可能希望将method1() 更改为通过引用来获取equation,例如equation& eqconst equation&,以避免复制并保留您可能拥有的任何虚拟方法的行为(阅读有关“切片”)。

【讨论】:

  • 你可以添加 this 是常量指针
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 2017-10-11
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多