fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4. class Parent
  5. {
  6. public:
  7. Parent() {}
  8.  
  9. virtual void logic() = 0;
  10.  
  11. //strings and other members of every Child
  12. };
  13.  
  14. class Child1 : public Parent
  15. {
  16. public:
  17. void logic() override { std::cout << "Hi from Child1." << std::endl; }
  18. };
  19.  
  20. class Child2 : public Parent
  21. {
  22. public:
  23. void logic() override { std::cout << "Hi from Child2." << std::endl; }
  24. };
  25.  
  26. class Child3 : public Parent
  27. {
  28. public:
  29. void logic() override { std::cout << "Hi from Child3." << std::endl; }
  30. };
  31.  
  32. int main() {
  33. std::vector<std::unique_ptr<Parent>> objects;
  34. objects.push_back(std::make_unique<Child1>());
  35. objects.push_back(std::make_unique<Child2>());
  36. objects.push_back(std::make_unique<Child3>());
  37.  
  38. for(const auto& child : objects)
  39. child->logic();
  40. return 0;
  41. }
Success #stdin #stdout 0s 4364KB
stdin
Standard input is empty
stdout
Hi from Child1.
Hi from Child2.
Hi from Child3.