Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class A {
- virtual void foo() = 0;
- };
- class B : virtual public A { };
- class C : virtual public A { };
- class D: public B, public C {
- virtual void foo() { }
- };
- void go()
- {
- D* d = new D();
- // Upcast
- A* a = static_cast<A*>(d); // ok
- A* a2 = dynamic_cast<A*>(d); // ok
- // Downcast
- D* d2 = static_cast<D*>(a); // error: cannot convert from base ‘A’ to derived type ‘D’ via virtual base ‘A’
- D* d3 = dynamic_cast<D*>(a); // slow
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement