私は継承でこの問題を抱えています。私には3つのクラスがあり、それらの間に親の関係があります。それらのすべてには、関数と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://ja.cppreference.com/w/cpp/language/override – stefaanv