#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++;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IFdpZGdldCB7CiAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZSgpOwp9OwoKc3RydWN0IExhYmVsIDogcHVibGljIFdpZGdldCB7CiAgICB2b2lkIGluZmxhdGUoKTsKfTsKCnZvaWQgTGFiZWw6OmluZmxhdGUoKXsKICAgIHN0ZDo6Y291dCA8PCAiQ2hpbGQgZnVuY3Rpb24gY2FsbGVkIiA8PCBzdGQ6OmVuZGw7Cn0KCnZvaWQgV2lkZ2V0OjppbmZsYXRlKCl7CiAgICBzdGQ6OmNvdXQgPDwgIlBhcmVudCBmdW5jdGlvbiBjYWxsZWQiIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxXaWRnZXQqPiB3aWRnZXRzID0gc3RkOjp2ZWN0b3I8V2lkZ2V0Kj4oKTsKICAgIExhYmVsIExhYmVsMTsKICAgIExhYmVsIExhYmVsMjsKICAgIHdpZGdldHMucHVzaF9iYWNrKCZMYWJlbDEpOwogICAgd2lkZ2V0cy5wdXNoX2JhY2soJkxhYmVsMik7CiAgICBpbnQgaSA9IDA7CiAgICB3aGlsZShpIDwgd2lkZ2V0cy5zaXplKCkpewogICAgICAgIHdpZGdldHNbaV0tPmluZmxhdGUoKTsKICAgICAgICBpKys7CiAgICB9Cn0K