c ++抽象类的向量

时间:2015-03-27 03:09:09

标签: c++ inheritance vector polymorphism

我正在尝试制作vector<Superclass>的c ++变量。

我最初在标题Superclass中给了virtual int function();一个公共函数,我尝试在两个子类中重写,如:

- 在标题中 -

class Subclassthing : public Superclass { public: int function(); ...}

- 在cpp文件中 -

int Subclass::function() {//actually do stuff}

我稍后创建vector<Superclass>,我将Subclass元素添加到其中并调用function()。

当我试图了解原因时,构建因为一些疯狂的原因而尖叫着我,这导致我使用了一些十六进制代码。当我将超类中的声明更改为virtual int function() {return 0;}时,它已经停止了,但我怀疑我没有正确地执行此操作并且它只会调用Superclass的版本而不是子类的版本。我该如何解决?起初我试图使超类声明成为一个纯虚函数,但后来我不再能够创建它的向量,因为我无法实例化纯虚拟对象。

编辑,好吧,我意识到我现在因为切片而陷入困境。这是否意味着没有办法优雅地做到这一点(呃,没有指针?)

0 个答案:

没有答案