Erreur du compilateur C2635
ne peut pas convertir un 'identificateur1*' en 'identificateur2*' ; la conversion à partir d’une classe de base virtuelle est implicite
La conversion nécessite un cast d’une virtual
classe de base vers une classe dérivée, qui n’est pas autorisée.
L’exemple suivant génère l’erreur C2635 :
// C2635.cpp
class B {};
class D : virtual public B {};
class E : public B {};
int main() {
B b;
D d;
E e;
D * pD = &d;
E * pE = &e;
pD = (D*)&b; // C2635
pE = (E*)&b; // OK
}