fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <memory>
  4.  
  5. class Fruit
  6. {
  7. public:
  8. virtual void getOld() = 0;
  9. };
  10.  
  11. class Orange : Fruit
  12. {
  13. public:
  14. Orange() {}
  15.  
  16. void add(std::shared_ptr<Fruit> f)
  17. {
  18. v.push_back(f);
  19. }
  20.  
  21. std::shared_ptr<Fruit> get(int k)
  22. {
  23. return v[k];
  24. }
  25.  
  26. void getOld()
  27. {
  28. std::cout << "Orange - I'm old." << std::endl;
  29. }
  30. private:
  31. std::vector<std::shared_ptr<Fruit>> v;
  32. };
  33.  
  34. class Bitter : public Fruit
  35. {
  36. public:
  37. Bitter() {}
  38.  
  39. void getOld()
  40. {
  41. std::cout << "Bitter - I'm old." << std::endl;
  42. }
  43.  
  44. void getNew()
  45. {
  46. std::cout << "Bitter - I'm new." << std::endl;
  47. }
  48. };
  49.  
  50. int main(int argc, char ** argv)
  51. {
  52. auto orange = new Orange;
  53. orange->add(std::make_shared<Bitter>());
  54. auto bitter = orange->get(0);
  55. bitter->getOld();
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
Bitter - I'm old.