Поделиться через


Ошибка компилятора 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
}