String übergeben
-
Hallo zusammen,
ich möchte von einer Klasse B aus auf eine private Stringvariable der Klasse A zugreifen. Wird das auch über get und set Methoden durchgeführt und wenn ja, wie sehe so eine z.B. aus. Habe das Problem, dass ich einen String auslesen möchte, ich aber per get Methode diesen nicht zurückgeben kann. Ich habe gerade ein Brett vor dem Kopf und mir fällt partout nicht ein wie ich das einfach lösen kann.Vielen Dank im Voraus,
Nas
-
Wenn der String privat ist, haben Außenstehende normalerweise nichts damit zu schaffen. Das heißt, die Klasse A müsste eine get-Methode bereitstellen, die diesen String liefert:
const string& getdata()const { return theData; }Dir sollte aber klar sein, daß dan JEDER diese Methoden nutzen könnte, nicht nur die Klasse B.
-
Du könntest natürlich auch Klasse B als friend von Klasse A deklarieren, dann kannst du direkt auf die privaten Member von A zugreifen.
Dies sollte man jedoch genau bedenken, ob es vom Design her nicht anders und besser machbar ist.Lg freeG
-
Edit:
Ja, es hat geklappt. Danke. Ich hatte nur einen anderen Fehler übersehen, so dass es vorher nicht geklappt hat. Wieso muss eigentlich vor der Methode noch ein const stehen? Reicht es bei get-Methoden nicht aus
std::string &get_Name(void) const
zu schreiben?
-
Nasghat schrieb:
Edit:
Ja, es hat geklappt. Danke. Ich hatte nur einen anderen Fehler übersehen, so dass es vorher nicht geklappt hat. Wieso muss eigentlich vor der Methode noch ein const stehen? Reicht es bei get-Methoden nicht aus
std::string &get_Name(void) const
zu schreiben?Das erste const bezieht sich auf den Rückgabetyp. Du gibst also eine Referenz auf einen konstanten String zurück, sonst könntest du ja den String von außen verändern. Das zweite const bedeutet nur dass es eine konstante Elementfunktion ist, die keine Member verändert. Wenn deine Elementfunktion const ist, dann wird das Objekt, welches die Funktion nutzt als const behandlet( konstante Objekte können auch nur konstante Elementfunktionen aufrufen ), daher muss auch die Referenz konstant sein, denn du kannst ja nicht eine nicht konstante Referenz mit einem konstanten String initialisieren.
Lg freeG
-
Ok, danke euch. Dann hat sich das geklärt.
mkG Nas