Compiler Error C2635


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Error C2635.

cannot convert an 'identifier1*' to an 'identifier2*'; conversion from a virtual base class is implied

The conversion requires a cast from a virtual base class to a derived class, which is not allowed.

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