fork(4) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct B
  5. {
  6. int b;
  7. virtual ~B() {};
  8. virtual void show() { std::cout << "B::show();\n"; };
  9. };
  10.  
  11. struct X: virtual public B
  12. {
  13. int x;
  14. };
  15.  
  16. struct Y: virtual public B
  17. {
  18. int y;
  19. };
  20.  
  21. struct C: virtual public X, virtual public Y
  22. {
  23. /*virtual*/ void show() { std::cout << "C::show()\n"; };
  24. };
  25.  
  26. int main() {
  27. B *b = new B;
  28. C *c = (C*) b;
  29. delete c;
  30. return 0;
  31. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:28:14: error: cannot convert from pointer to base class ‘B’ to pointer to derived class ‘C’ because the base is virtual
  C *c = (C*) b;
              ^
stdout
Standard output is empty