【问题标题】:How to manage base-class instances and derived-class instances in one vector?如何在一个向量中管理基类实例和派生类实例?
【发布时间】:2015-01-30 13:49:25
【问题描述】:

问题:

我有一堂课,比如说mainClass。现在我创建另外两个类并让它们从基类继承。

所以,我想管理任何基类或继承类的所有实例,并将它们存储在例如向量中(如果它不起作用,则不必是向量)。

std::vector<mainClass*> 确实接受继承类的所有实例,但我无法访问那些在继承类中新声明的函数,只能访问那些也是基类成员的函数。..

有什么方法可以解决这个问题,也许是模板?还是我忽略了一些简单的事情?

【问题讨论】:

    标签: c++ templates inheritance vector polymorphism


    【解决方案1】:

    继承的目的是允许通过基类调用派生类的方法。为此,基类将方法定义为virtual。 如果在基类中将派生类中需要调用的所有方法都定义为virtual,则可以通过mainClass*调用。

    如果您不这样做,您将必须知道哪个实例属于哪个类,并相应地进行转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-12
      • 2014-04-27
      • 2021-11-19
      • 1970-01-01
      • 2013-05-20
      • 2011-12-25
      • 2013-10-15
      • 2023-03-19
      相关资源
      最近更新 更多