dynamic_cast ошибка C2683: is not a polymorphic type

Если при использовании dynamic_cast вы ловили ошибку компиляции C2683, то вам необходимо просто добавить к классу виртуальную функцию или деструктор.

class Base1{};
class Base2
{
virtual ~Base2() {;}
};
class A : public Base1{};
class B : public Base2{};
Base1* pBase1 = new Base1();
Base2* pBase2 = new Base2();
A* pA = dynamic_cast(pBase1); // error C2683: 'dynamic_cast'
// : 'Base1' is not a polymorphic type
B* pB = dynamic_cast(pBase2); // OK

Теги: C++ Ошибки