【发布时间】:2014-05-12 07:40:58
【问题描述】:
我有一个基类和几个继承类。
class Base {
public:
void update();
};
class Inherited1 {
public:
void update(); // override base method
};
class Inherited2 {
public:
void update(); // override base method
};
我有一个基类的向量,其中包含指向子类的多个实例的指针,即
vector<Base> myObjects;
Base *i1 = new Inherited1();
Base *i2 = new Inherited2();
myObjects.push_back(*i1);
myObjects.push_back(*i2);
我希望能够遍历向量中的每个元素并自动调用子类(即覆盖)方法,例如:
for (int i=0; i<myObjects.size(); i++) {
(*myObjects[i]).update();
}
但这不起作用——它只是调用超类方法。实现这一目标的正确方法是什么?
【问题讨论】:
标签: c++ inheritance