000
05.09.2006, 20:57 Uhr
Yadgar
|
High!
Wenn ich die Ausführungen im Lehrbuch richtig verstanden habe, bewirkt der Zugriffsmodus "protected" bei public-Vererbung, dass die betreffende Methode bzw. Mitgliedsvariable zwar für "Außenstehende" unzugänglich ist, sehr wohl aber innerhalb der abgeleiteten Klasse verwendet werden kann.
Wieso bekomme ich aber dann für diesen Code:
C++: |
// Wandlungen bei nicht-öffentlich abgeleiteten Klassen // (AUPPERLE, S. 644ff)
#include <iostream> using namespace std;
struct A { protected: int i, j, k; void doIt(); A(); };
A::A() { cout << "Neues A-Objekt erzeugt!" << endl; }
void A::doIt() { cout << "a::doIt() ausgef" << (char)129 << "hrt!" << endl; }
struct B : public A { string name; void doIt(); };
void B::doIt() { A::doIt(); i=3; j=4; k=5; cout << "Zugriff auf i, j, k!" << endl; A a; }
int main() { B b; b.doIt(); // A a; // b.j=5; }
|
die Fehlermeldung "A::A() is protected" - obwohl durch protected B::doIt den Konstruktor doch benutzen können müsste?
...eine Seite weitergeblättert: ah, ich sehe schon - Konstruktoren werden gar nicht vererbt! Dann ist die Sache natürlich klar...
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog Dieser Post wurde am 05.09.2006 um 20:59 Uhr von Yadgar editiert. |