正如前面的评论所说,问题在于您的使用代码。我对其进行了修改,使其能够按预期编译和运行。我无法告诉您原始代码的确切问题,因为它无法编译。
以下是工作代码:
#include <iostream>
#include <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;
}
int main()
{
std::vector<Widget*> widgets = std::vector<Widget*>();
Label Label1;
Label Label2;
widgets.push_back(&Label1);
widgets.push_back(&Label2);
int i = 0;
while(i < widgets.size()){
widgets[i]->inflate();
i++;
}
}
查看其工作情况的链接:
https://ideone.com/ETDClF