#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;
}
