Есть ли что-то не так в следующем коде? В частности, меня интересует использование reinterpret_cast
.Использование reinterpret_cast
class Base1
{
public:
virtual void foo(){}
};
class Base2
{
public:
virtual void bar(){}
};
class Derived : public Base1, public Base2
{
};
int main()
{
Base1* instance1 = new Derived();
instance1->foo();
Base2* instance2 = reinterpret_cast<Base2*>(instance1);
instance2->bar();
return 0;
}
Является ли наследование 'Base2' непубличным' специально? – emlai
@zenith Нет. Это имеет значение? – ksl
Да. В противном случае вы не можете использовать между «Base2» и «Derived»: http://stackoverflow.com/q/860339/3425536 – emlai