コンパイラ エラー 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
}