getKlasseA() gibt keine Referenz oder Pointer zurück sondern eie Kopie der Varibalen. Es wird also eine temporäte kopie erstellt und von dieser kopie rufst du die methode setValue auf. Setzt also den wert der temporären kopie und nicht des original objektes. Nach der Abarbeitung der Codezeile wird das temporäre objekt wieder glöscht und alles ist weg.
Die Methode muss entweder
KlasseA& KlasseB::getKlasseA() const oder
KlasseA* KlasseB::getKlasseA() const
sein.
Erstmal danke für die schnelle Antwort.
Ich weiß auch, dass es so ist, wie du es beschrieben hast.
Jetzt aber folgendes Problem.
Wenn ich das so mache, wie du es auch gesagt hast, sagt mein Compiler:
const KlasseA' kann nicht in 'KlasseA &' konvertiert werden.
Und an der Stelle hänge ich dann fest.
Hast du da vielleicht auch eine Lösung?
Falls das noch zu einem Problem wegen dem "const" führt (weiss ich nicht gerade auswendig), kannst du
a) die Membervariabel "klasseA" nach "KlasseA" casten, oder
b) das "const" bei der "getKlasseA"-Methode weglassen...
Aber das hat nichts mit Qt zu tun, sondern mit C++ (gehört also nach "C++ Grundlagen).
KlasseA& KlasseB::getKlasseA() const oder
KlasseA* KlasseB::getKlasseA() const
Wenn ich das so mache, wie du es auch gesagt hast, sagt mein Compiler:
const KlasseA' kann nicht in 'KlasseA &' konvertiert werden.
Genau da sagt dir dein compiler, das da ziemliche ungereimtheiten auftreten.
Wenn B der Verwalter von Instanz(en) der Klasse A ist, dann sollte eine Methode niemals eine nichtkonstante referenz auf ein verwaltetes Objekt rausgeben, wenn die methode selber const ist !