我正在尝试制作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的版本而不是子类的版本。我该如何解决?起初我试图使超类声明成为一个纯虚函数,但后来我不再能够创建它的向量,因为我无法实例化纯虚拟对象。
编辑,好吧,我意识到我现在因为切片而陷入困境。这是否意味着没有办法优雅地做到这一点(呃,没有指针?)