繼承問題我只是無法環繞我的頭。我有三個班級,他們之間有父母關係。它們都具有功能calcForces()。繼承:子代使用父虛函數而不是自己
class Object {
public:
virtual void calcForces();
};
class Boat : public Object {
public:
virtual void calcForces();
};
class Sailboat : public Boat {
public:
void calcForces(Wind wind);
};
現在我的問題是,有II作爲帆船創建了一個對象(和對象指針保存它),但是當我打電話calcForces()我結束了內部船:: calcForces(),而不是Sailboat :: calcForces()。我究竟做錯了什麼?
下面是我調用該函數:
(*this->object_ptr_arr[i]).calcForces(); //'object_ptr_arr' is of type 'Object**'
請顯示[MCVE]。 –
您需要通過指針調用多態行爲。嘗試:'this-> object_ptr_arr [i] - > calcForces();' – Galik
爲了避免這些問題,請參閱http://en.cppreference.com/w/cpp/language/override – stefaanv