コンパイラ エラー C2683

'キャスト' : '型' はポリモーフィックな型ではありません。

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
}