fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4.  
  5. class Foo
  6. {
  7. public:
  8. virtual void Update(){
  9. std::cout << "Update idle" << std::endl;
  10. };
  11. };
  12.  
  13. class Foo1 : public Foo
  14. {
  15. public:
  16. void Update() override
  17. {
  18. std::cout << "Update Foo1" << std::endl;
  19. }
  20. };
  21.  
  22. class Foo2 : public Foo
  23. {
  24. void Update() override
  25. {
  26. std::cout << Bar() << std::endl;
  27. }
  28.  
  29. std::string Bar(){
  30. return "Update Foo2";
  31. }
  32. };
  33.  
  34.  
  35. int main() {
  36. std::vector<std::shared_ptr<Foo>> vec{
  37. std::make_shared<Foo>(),
  38. std::make_shared<Foo1>(),
  39. std::make_shared<Foo2>()
  40. };
  41.  
  42. for (auto &&ptr : vec)
  43. {
  44. ptr->Update();
  45. }
  46. }
Success #stdin #stdout 0s 5684KB
stdin
Standard input is empty
stdout
Update idle
Update Foo1
Update Foo2