fork(3) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Base
  5. {
  6.  
  7. };
  8.  
  9. struct D1 : Base
  10. {
  11.  
  12. };
  13. struct D2 : Base
  14. {
  15. void bar() const
  16. {
  17. std::cout << "D2::bar" << std::endl;
  18. }
  19. };
  20.  
  21. struct D3 : D1, D2
  22. {
  23.  
  24. };
  25.  
  26. Base const * foo(Base const * base)
  27. {
  28. return static_cast<D3::D2 const *>(
  29. static_cast<D3 const *>(base));
  30. }
  31.  
  32.  
  33. int main()
  34. {
  35. D3 d3;
  36. Base const *ptr = static_cast<D1 const *>(&d3);
  37. Base const *res = foo(ptr);
  38. static_cast<D2 const *>(res)->bar();
  39. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘const Base* foo(const Base*)’:
prog.cpp:29:31: error: ‘Base’ is an ambiguous base of ‘D3’
   static_cast<D3 const *>(base));
                               ^
stdout
Standard output is empty