Tengo un fallo que no logro entender en este programa de herencia múltiple de clases abstractas. El compilador me acepta el casting sin problemas, pero a la hora de ejecutar el programa, me imprime por pantalla 2 veces la operación A en vez de primero la A y luego la B, a pesar de que la variable B no debería de tener acceso a esa función, ¿alguien sabe por qué?
Código [Seleccionar]
#include <iostream>
using namespace std;
class A{
public:
virtual void opA() = 0;
};
class B{
public:
virtual void opB() = 0;
};
class AB: public A, public B{
public:
void opA(){
cout<<"Operacion A"<<endl;
}
void opB(){
cout<<"Operacion B"<<endl;
}
};
int main(){
A* variableA = new AB();
B* variableB = reinterpret_cast<B*>(variableA);
variableA->opA();
variableB->opB();
delete variableA;
return 0;
}