c++ - 从基类的 vector 访问继承的类方法

标签 c++ inheritance

我有一个基类和几个继承类。

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/

相关文章:

c++ - dynamic_cast 和多态性

Java继承字段

java - 有没有办法在 Java 中使用单个对象来运行继承的其他类的方法?

c++ - 获取标题栏文字大小 WINAPI

c++ - 使用VS 2010构建ACE和TAO(CORBA)时发生许多错误

java - Hibernate:是否可以将多级继承映射到单个表?

c++ - 从两个不同类继承的非虚拟基类的访问成员

c++ - Boost Graph - 大图上的 Astar 非常慢

c++ - 如何验证 Internet 打印协议(protocol) (IPP)?

c++ - 什么是更好的Matrix4x4类设计c++新手