static_cast vs dynamic_cast: undefined behavior
Do not use static_cast
when you cast from a basic class to a derived one. This may lead to undefined behavior. To handle the polymorphism, a virtual inheritance or a multiple inheritance case always use dynamic_cast
instead.
The following short example shows the undefined behavior cases. This works with GCC …