fork download
  1. #include <iostream>
  2.  
  3. class ServoPart {
  4. public:
  5. virtual bool move() {
  6. std::cout << "servopart::move" << std::endl;
  7. return true;
  8. }
  9. };
  10.  
  11. struct RoboPart {
  12. virtual void doJob() =0;
  13. virtual bool move() =0;
  14. };
  15.  
  16.  
  17. struct ServoRoboPart: public ServoPart, RoboPart
  18. {
  19. virtual bool move(){ ServoPart::move(); return true; };
  20. };
  21.  
  22. class Claw : public ServoRoboPart {
  23. public:
  24. void doJob() {std::cout << "claw::doJob" << std::endl;}
  25. };
  26.  
  27. class Arm : RoboPart {
  28. public:
  29. void doJob() {std::cout << "arm::doJob" << std::endl;}
  30. bool move() {std::cout << "arm::move" << std::endl; return true;}
  31. };
  32.  
  33. int main()
  34. {
  35. Claw c;
  36. Arm a;
  37. a.move();
  38. a.doJob();
  39. c.move();
  40. c.doJob();
  41. }
Success #stdin #stdout 0s 5572KB
stdin
Standard input is empty
stdout
arm::move
arm::doJob
servopart::move
claw::doJob