如何在C++中将派生对象作为父对象传递

How to pass derived object as parent object in C++?

本文关键字:对象 派生 C++      更新时间:2023-10-16

我使用的是核心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"
}

如果你能帮忙,我真的很高兴。提前感谢

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