2014-10-07 25 views
-1

我正在使用核心OOP模型。 我在哪裏有一些問題。如何在C++中將派生對象作爲父對象傳遞?

帶有「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" 
} 

如果你能幫忙,我會很高興。提前致謝

+2

'method1'不是靜態的。這應該如何工作? – 2014-10-07 09:20:20

+2

當您按值傳遞對象參數時,您無法獲得多態性。通過引用傳遞,或傳遞對象的地址。 – 2014-10-07 09:21:18

+1

請從編譯器粘貼** exact literal **錯誤消息。 – vz0 2014-10-07 09:22:13

回答

5

您需要通過*this,因爲您的方法按值取equation。順便說一下,您可能需要改爲method1()equation爲參考,如equation& eqconst equation&,以避免複製並保留您可能擁有的任何虛擬方法的行爲(請參閱「切片」)。

+0

你可以添加'this'是const指針 – Creris 2014-10-07 09:22:09

相關問題