fork download
  1. struct Base { virtual~Base() {} };
  2.  
  3. struct Der1 : public virtual Base { int F1; };
  4.  
  5. struct Der2 : public virtual Base { int F2[2]; };
  6.  
  7. struct Der3 : public virtual Base { int F3[3]; };
  8.  
  9. struct Der4 : public virtual Base { int F4[4]; };
  10.  
  11. struct Der5 : public virtual Base { int F5[5]; };
  12.  
  13. struct DerAll_1 : Der1, Der2, Der3, Der4, Der5 { int F; };
  14.  
  15. struct DerAll_2 : Der5, Der4, Der3, Der2, Der1 { int F; };
  16.  
  17.  
  18.  
  19. Base* toBase( Der2* p ) { return static_cast<Base*>( p ); }
  20.  
  21.  
  22.  
  23.  
  24.  
  25. int main()
  26.  
  27. {
  28.  
  29. delete toBase( new Der2 );
  30.  
  31. delete toBase( new DerAll_1 );
  32.  
  33. delete toBase( new DerAll_2 );
  34.  
  35.  
  36.  
  37. toBase( (DerAll_1*)17 );
  38.  
  39.  
  40.  
  41. return 0;
  42.  
  43. }
  44.  
  45.  
Success #stdin #stdout 0s 3028KB
stdin
Standard input is empty
stdout
Standard output is empty