- #include <iostream> 
- #include <memory> 
- #include <vector> 
- class Parent 
- { 
- public: 
-     Parent() {} 
-   
-     virtual void logic() = 0; 
-   
-     //strings and other members of every Child 
- }; 
-   
- class Child1 : public Parent 
- { 
- public: 
-     void logic() override { std::cout << "Hi from Child1." << std::endl; } 
- }; 
-   
- class Child2 : public Parent 
- { 
- public: 
-     void logic() override { std::cout << "Hi from Child2." << std::endl; } 
- }; 
-   
- class Child3 : public Parent 
- { 
- public: 
-     void logic() override { std::cout << "Hi from Child3." << std::endl; } 
- }; 
-   
- int main() { 
- 	std::vector<std::unique_ptr<Parent>> objects; 
- 	objects.push_back(std::make_unique<Child1>()); 
- 	objects.push_back(std::make_unique<Child2>()); 
- 	objects.push_back(std::make_unique<Child3>()); 
-   
- 	for(const auto& child : objects) 
- 	  child->logic(); 
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dmVjdG9yPgpjbGFzcyBQYXJlbnQKewpwdWJsaWM6CiAgICBQYXJlbnQoKSB7fQoKICAgIHZpcnR1YWwgdm9pZCBsb2dpYygpID0gMDsKCiAgICAvL3N0cmluZ3MgYW5kIG90aGVyIG1lbWJlcnMgb2YgZXZlcnkgQ2hpbGQKfTsKCmNsYXNzIENoaWxkMSA6IHB1YmxpYyBQYXJlbnQKewpwdWJsaWM6CiAgICB2b2lkIGxvZ2ljKCkgb3ZlcnJpZGUgeyBzdGQ6OmNvdXQgPDwgIkhpIGZyb20gQ2hpbGQxLiIgPDwgc3RkOjplbmRsOyB9Cn07CgpjbGFzcyBDaGlsZDIgOiBwdWJsaWMgUGFyZW50CnsKcHVibGljOgogICAgdm9pZCBsb2dpYygpIG92ZXJyaWRlIHsgc3RkOjpjb3V0IDw8ICJIaSBmcm9tIENoaWxkMi4iIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKY2xhc3MgQ2hpbGQzIDogcHVibGljIFBhcmVudAp7CnB1YmxpYzoKICAgIHZvaWQgbG9naWMoKSBvdmVycmlkZSB7IHN0ZDo6Y291dCA8PCAiSGkgZnJvbSBDaGlsZDMuIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhcmVudD4+IG9iamVjdHM7CglvYmplY3RzLnB1c2hfYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENoaWxkMT4oKSk7CglvYmplY3RzLnB1c2hfYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENoaWxkMj4oKSk7CglvYmplY3RzLnB1c2hfYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENoaWxkMz4oKSk7CgoJZm9yKGNvbnN0IGF1dG8mIGNoaWxkIDogb2JqZWN0cykKCSAgY2hpbGQtPmxvZ2ljKCk7CglyZXR1cm4gMDsKfQ==