fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class IWithOperations {
  6. public:
  7. // implemented in COperations
  8. virtual void AddOperation() = 0;
  9. };
  10.  
  11. class IDocInterface : public virtual IWithOperations
  12. {
  13. public:
  14. // implemented in CSpecificDoc
  15. virtual bool CreateDoc() = 0;
  16.  
  17. // implemented in CDoc
  18. virtual void Save() = 0;
  19. };
  20.  
  21. class COperations : public virtual IWithOperations
  22. {
  23. public:
  24. void AddOperation() {}; // implementation for CDoc and derivates
  25. };
  26.  
  27. class CDoc : public virtual IDocInterface, public virtual COperations
  28. {
  29. public:
  30. void Save() {} // implemented here
  31. virtual bool CreateDoc() = 0; // must be overridden
  32. };
  33.  
  34. class CSpecificDoc : public virtual CDoc
  35. {
  36. public:
  37. bool CreateDoc() {} // implemented here
  38. };
  39.  
  40. int main() {
  41. CSpecificDoc specific;
  42. return 0;
  43. }
Success #stdin #stdout 0s 2892KB
stdin
Standard input is empty
stdout
Standard output is empty