dynamic_cast : 'class' is not a polymorphic type
You cannot use dynamic_cast to convert from a non-polymorphic class (a class with no virtual functions).
You can use static_cast to perform conversions of non-polymorphic types. However, static_cast does not perform a run-time check.
Example
class B { }; class D : public B { }; void f(B* pb) { D* pd1 = dynamic_cast<D*>(pb); // error }