Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.48 KB | None | 0 0
  1. class A {
  2. virtual void foo() = 0;
  3. };
  4. class B : virtual public A { };
  5. class C : virtual public A { };
  6. class D: public B, public C {
  7. virtual void foo() { }
  8. };
  9.  
  10. void go()
  11. {
  12. D* d = new D();
  13. // Upcast
  14. A* a = static_cast<A*>(d); // ok
  15. A* a2 = dynamic_cast<A*>(d); // ok
  16. // Downcast
  17. D* d2 = static_cast<D*>(a); // error: cannot convert from base ‘A’ to derived type ‘D’ via virtual base ‘A’
  18. D* d3 = dynamic_cast<D*>(a); // slow
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement