Почему защищенное наследование приводит к сбою dynamic_cast?
Я изменил свой базовый класс C ++, чтобы бытьprotected
наследство и мойdynamic_cast
(с) перестал работать.
Зачем менять наследство наprotected
изменить поведение?dynamic_cast
struct Base {
static Base *lookupDerived(); // Actually returns a Derived * object.
};
struct Derived : protected /* Switch this to public to get it working */ Base {
static void test() {
Base *base = lookupDerived();
if (dynamic_cast(base)) {
std::cout < "It worked (we must be using public inheritance)." < std::endl;
} else {
std::cout < "It failed (we must be using protected inheritance)." < std::endl;
}
};