继承问题我只是无法环绕我的头。我有三个班级,他们之间有父母关系。它们都具有功能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