I changed my C++ base class to be protected inheritance and my dynamic_cast(s) stopped working.
protected
dynamic_cast
Why should changing the inheritance to
Private (or protected) inheritance is semantically different from public inheritance. It is not a "is-a" relationship but a "implemented in terms of" relationship.
Meaning that you can't use a base class as a handle to a derived object.