Error del compilador C2635Compiler Error C2635

no se puede convertir un ' identificador1 * ' en ' identificador2 * '; implícitamente la conversión de una clase base virtualcannot convert an 'identifier1*' to an 'identifier2*'; conversion from a virtual base class is implied

La conversión requiere una conversión de una virtual clase base a una clase derivada, lo cual no está permitido.The conversion requires a cast from a virtual base class to a derived class, which is not allowed.

En el ejemplo siguiente se genera C2635:The following sample generates 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
}