编译器错误 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
}