Warum schlägt die geschützte Vererbung bei dynamic_cast fehl?
Ich habe meine C ++ - Basisklasse in geändertprotected
Erbschaft und meinedynamic_cast
(s) aufgehört zu arbeiten.
Warum sollte die Vererbung in geändert werden?protected
ändere das Verhalten vondynamic_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<Derived *>(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;
}
};