class Obj {...};
class MyFoo : public Foo, virtual public Obj {...};
class MyBar : public Bar, virtual public Obj {...};
class MyBaz : public Baz, virtual public Obj {...};
####
void *ptr = (void*) static_cast(foo);
####
Foo* foo = dynamic_cast((Obj*) ptr);