Kontrucktorprobleme -> Vererbung und "hat ein Beziehungen"
-
Hallo!
Habe ein neues Problem, welches zumindest nicht von mir gelöst werden kann
Ich habe beispielsweise eine
class Steuerung
Stadt Darmstadt;eine
class Stadt
Rathaus itsRathaus;eine
class Gebäude
int anzBeamte;
void Set_anzBeamte(int);und eine
class Rathaus (Vererbung) public Gebäude
Rathaus() { Set_anzBeamte(10) }
void Beamte_machePause();
void Beamte_trinkeKaffe();
void Beamte_laufeSinnlosTreppeHochUndRunterHauptsacheManSiehtBeschäftigtAus();Das Objekt von Steuerung hat mehrere Objekte Stadt.
Eine Stadt hat wiederum mehrere Gebäude, in dem Fall zumindest ein ein Rathaus.Das Problem:
Ich kann Alle Objekte erzeugen. Aber ich bekomme eine Fehlermeldung vom Compiler wenn ich Elementvariablen von GEBÄUDE im Konstrucktor von Rathaus initialisiere:
error C2248: "Rathaus::Rathaus" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "Rathaus" erfolgte. Siehe Deklaration von Rathaus.OK! Was sagt mir das? Und vor Allem was sagt es euch (außer das Beamte immer VOID zurück geben
)??
Danke im Voraus
-
Hallo,
um die Elementvariablen einer Basisklasse von einer abgeleiteten Klasse zu initialisieren kann manden entsprechenden Konstroktor der Basisklasse aufrufen
eine als public oder protected deklarierte Funktion aufrufenWenn die Elementvariable der Basisklasse public oder protected ist kanns auch direkt auf die zugreifen
hoff das konnte dir helfen
mfg
socky
-
Moin,
In einer C++-Klasse sind die Member per default private, das heißt, nur die Klasse selbst kann darauf zugreifen. Du hast die Möglichkeit, das explizit zu ändern, indem du die Member public oder protected deklarierst. public heißt, jeder darf darauf zugreifen, protected heißt, die Klasse selbst und von ihr abgeleitete Klassen dürfen darauf zugreifen. Also in deinem Fall:
class Gebaeude { protected: int anzBeamte; };
Ich würde an deiner Stelle auch die Methoden public deklarieren, damit du sie nachher benutzen kannst.
-
SUPER! DANKSCHÖN!!
Ihr habt mir beide geholfen.
Das lustige ist, dass ich die schon Protected hatte. Habe es aber jetzt erst richtig kappiert und hatte einfach nur einen falschen Syntax.Der Compiler hat mich nur völlig falsch verstanden!?DANKE