我有一个基类和几个继承类。
class Base {
public:
void update();
};
class Inherited1 {
public:
void update(); // override base method
};
class Inherited2 {
public:
void update(); // override base method
};
我有一个基类的 vector ,其中包含指向子类的几个实例的指针,即
vector<Base> myObjects;
Base *i1 = new Inherited1();
Base *i2 = new Inherited2();
myObjects.push_back(*i1);
myObjects.push_back(*i2);
我希望能够遍历 vector 中的每个元素并自动调用子类(即重写)方法,例如:
for (int i=0; i<myObjects.size(); i++) {
(*myObjects[i]).update();
}
但这不起作用——它只是调用父类(super class)方法。实现这一目标的正确方法是什么?
最佳答案
您必须声明公共(public)继承,然后将 memvbers 声明为虚拟
class Base {
public:
virtual void update();
};
class Inherited1: public Base{
public:
virtual void update(); // override base method
};
class Inherited2: public Base{
public:
virtual void update(); // override base method
};
关于c++ - 从基类的 vector 访问继承的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603493/