编译器错误 C2635

无法将“identifier1*”转换为“identifier2*”;表示从虚拟基类的转换

转换需要从 virtual 基类强制转换为派生类,但这是不允许的。

下面的示例生成 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
}