fork(1) download
  1. #include <iostream>
  2.  
  3.  
  4. class SpaceShip;
  5. class MilleniumFalcon;
  6.  
  7.  
  8. class Pilot
  9. {
  10. public:
  11. virtual void operate(SpaceShip&)
  12. {
  13. std::cerr << "Operating spaceship" << std::endl;
  14. }
  15.  
  16. virtual void operate(MilleniumFalcon&)
  17. {
  18. std::cerr << "Cannot operate that spaceship!" << std::endl;
  19. }
  20. };
  21.  
  22. class Chewbacca: public Pilot
  23. {
  24. public:
  25. virtual void operate(SpaceShip&)
  26. {
  27.  
  28. std::cerr << "Don't want to operate that low spaceship!" <<
  29. std::endl;
  30. }
  31.  
  32. virtual void operate(MilleniumFalcon&)
  33. {
  34. std::cerr << "Operating the Millenium Falcon" << std::endl;
  35. }
  36. };
  37.  
  38. class SpaceShip
  39. {
  40. public:
  41. virtual void operate_by(Pilot& pilot) { pilot.operate(*this); }
  42. };
  43.  
  44. class MilleniumFalcon: public SpaceShip
  45. {
  46. public:
  47. virtual void operate_by(Pilot& pilot) override { pilot.operate(*this); }
  48. };
  49.  
  50.  
  51. void launch_ship(Pilot& pilot, SpaceShip& ship)
  52. {
  53. ship.operate_by(pilot);
  54. }
  55.  
  56. int main()
  57. {
  58. Chewbacca chewie;
  59. MilleniumFalcon millenium;
  60.  
  61. launch_ship(chewie, millenium);
  62. }
Success #stdin #stdout #stderr 0s 3456KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Operating the Millenium Falcon