编译器错误 C2683

“cast”:“type”不是多态类型

不能使用 dynamic_cast 从非多态类(没有虚函数的类)转换。

可以使用 static_cast 执行非多态类型的转换。 但是,static_cast 不执行运行时检查。

以下示例生成 C2683:

// C2683.cpp
// compile with: /c
class B { };
class D : public B { };

void f(B* pb) {
   D* pd1 = dynamic_cast<D*>(pb);  // C2683
   D* pd1 = static_cast<D*>(pb);   // OK
}