#include <iostream>
class object {
public:
virtual ~object() {}
};
class A : public object {
};
class B : public object {
};
class C : public A, public B {
};
int main() {
A *a = new A();
A *c = new C();
B *b1 = dynamic_cast<B*>(a); // так все-таки можно
B *b2 = dynamic_cast<B*>(c); // и оно даже имеет смысл
std::cout << b1 << " " << b2 << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3Mgb2JqZWN0IHsKcHVibGljOgogICAgdmlydHVhbCB+b2JqZWN0KCkge30KfTsKCmNsYXNzIEEgOiBwdWJsaWMgb2JqZWN0IHsKfTsKCmNsYXNzIEIgOiBwdWJsaWMgb2JqZWN0IHsKfTsKCmNsYXNzIEMgOiBwdWJsaWMgQSwgcHVibGljIEIgewp9OwoKaW50IG1haW4oKSB7CiAgICBBICphID0gbmV3IEEoKTsKICAgIEEgKmMgPSBuZXcgQygpOwogICAgQiAqYjEgPSBkeW5hbWljX2Nhc3Q8Qio+KGEpOyAvLyDRgtCw0Log0LLRgdC1LdGC0LDQutC4INC80L7QttC90L4KICAgIEIgKmIyID0gZHluYW1pY19jYXN0PEIqPihjKTsgLy8g0Lgg0L7QvdC+INC00LDQttC1INC40LzQtdC10YIg0YHQvNGL0YHQuwogICAgc3RkOjpjb3V0IDw8IGIxIDw8ICIgIiA8PCBiMiA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQo=