如何在一个向量中管理基类实例和派生类实例?

时间:2014-12-02 10:38:53

标签: c++ templates inheritance vector polymorphism

问题:

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

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

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

有没有办法,也许有模板,来解决这个问题?或者我忽略了一些简单的事情?

1 个答案:

答案 0 :(得分:0)

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

如果你不这样做,你必须知道哪个实体属于哪个类,并且根据其进行投射。