fork(1) download
  1. #include <iostream>
  2.  
  3. struct Top {
  4. int value;
  5. Top(int val) : value(val) {}
  6. int get() {
  7. return value;
  8. }
  9. };
  10.  
  11. struct Mid1 : Top {
  12. Mid1() : Top(3) {}
  13. int get() {
  14. return 1;
  15. }
  16. };
  17.  
  18. struct Mid2 : Top {
  19. Mid2() : Top(4) {}
  20. int get() {
  21. return 2;
  22. }
  23. };
  24.  
  25. struct Bottom : Mid1, Mid2 {
  26. };
  27.  
  28. int main() {
  29. Bottom b;
  30. std::cout << b.Mid1::get() << std::endl;
  31. std::cout << b.Mid2::get() << std::endl;
  32. //std::cout << b.Top::get() << std::endl; // ERROR
  33. //std::cout << b.Mid1::Top::get() << std::endl; // ERROR
  34. //std::cout << b.Mid2::Top::get() << std::endl; // ERROR
  35. std::cout << static_cast<Mid1&>(b).Top::get() << std::endl; // OK
  36. std::cout << static_cast<Mid2&>(b).Top::get() << std::endl; // OK
  37. return 0;
  38. }
Success #stdin #stdout 0s 4268KB
stdin
Standard input is empty
stdout
1
2
3
4