Angenommen, ich habe eine Basis- und eine abgeleitete Klasse:
class Base
{
public:
virtual void Do();
}
class Derived:Base
{
public:
virtual void Do();
}
int main()
{
Derived sth;
sth.Do(); // calls Derived::Do OK
sth.Base::Do(); // ERROR; not calls Based::Do
}
wie gesehen möchte ich Base::Do durch Derived zugreifen. Ich erhalte einen Kompilierfehler als "Klasse Base in unzugänglich" jedoch, wenn ich Derive deklarieren als
class Derived: public Base
funktioniert es gut.
Ich habe gelesen, dass der Standardvererbungszugriff öffentlich ist, warum muss ich dann hier explizit öffentliche Vererbung deklarieren?