Da wir Methoden in der Basisklasse überladen haben und eine abgeleitete Klasse, die als privat/geschützt geerbt wurde.Zugriffserklärung der Basisklasse überladen Methode
- Können wir nur eine/mehrere der ursprünglichen Zugriffsebene der überladenen Methoden wiederherstellen?
- In GCC 4.4.0 versuche ich, die Basismethoden unter geschützten Zugriff zu setzen, dann vererbt er sie mit privatem Zugriff. Wenn ich versuche, die Zugriffsebene für die Öffentlichkeit wiederherzustellen, funktioniert es! Soll das funktionieren? oder ist es ein Fehler im Compiler? Nach meinem Verständnis sollte das Wiederherstellen der Zugriffsebene nicht dazu verwendet werden können, die Zugriffsebene eines Mitglieds zu fördern oder herabzustufen.
-Code-Schnipsel:
class base {
public:
void method() {}
void method(int x) {}
protected:
void method2() {}
};
class derived : private base {
public:
base::method; // Here, i want to restore only the none parameterized method
base::method2; // method2 is now public??
};
BTW- ist eine Deklaration wie 'base :: method' genau äquivalent zu' using base :: method'? – Kos
@Kos, ja aber es ist nicht mehr gültig zu sagen "base :: method;" in C++ 0x. Es wurde durch den Entwurf N3225 entfernt. –