struct不继承虚函数

时间:2018-05-20 01:37:04

标签: c++ inheritance polymorphism

我有两个相互继承的结构体,以及一个与这些结构无关的父结构,但是管理主类的std::vector指针。这是一些代码。

父类定义:

struct Widget {
    virtual void inflate();
}

子类定义:

struct Label : public Widget {
    void inflate();
}

功能实现:

void Label::inflate(){
    std::cout << "Child function called" << std::endl;
}

void Widget::inflate(){
    std::cout << "Parent function called" << std::endl;
}

用法:

std::vector<Widget*> widgets = std::vector<Widget*>();
Label1 = Label();
Label2 = Label();
widgets.push_back(Label1);
widgets.push_back(Label2);
int i = 0;
while(i < widgets.size()){
    widgets[i]->inflate();
    i++;
}

输出:

Parent function called
Parent function called

谢谢

1 个答案:

答案 0 :(得分:2)

问题在于您的使用代码,正如评论已经说过的那样。我已对其进行了修改,以便按预期编译和运行。我不能告诉你原始代码的确切问题,因为它没有编译。

以下是工作代码:

mem = malloc(val * sizeof *mem):

链接以查看是否有效:https://ideone.com/ETDClF