Multiple inheritance casting from base class to different derived class

c++, casting, multiple-inheritance

Solution

No. This is not possible (direct casting from `A*` to `B*`).

Because the address of `A` and `B` are at different locations in `class C`. So the cast will be always unsafe and possibly you might land up in unexpected behavior. Demo.

The casting should always go through `class C`. e.g.

A* pa = new C();
B* pb = static_cast<C*>(pa);
                   ^^^^ go through class C

Demo

Problem

Let's assume there is such class hierarchy: ``` class A //base class class B //interface class C : public A, public B ``` Then C object is created: ``` A *object = new C(); ``` Is it possible to cast object to B ? Important: I assume I don't know that object is C. I just know that it implements interface B

Original source