Zurückgegebener Wert aus Funktion kann nicht als Referenz übergeben werden
-
class Testobjekt { public: Testobjekt() { } Testobjekt(Testobjekt &value) { } }; Testobjekt ErstelleTestobjekt() { Testobjekt t; return t; } int main() { Testobjekt testobjekt(ErstelleTestobjekt()); }Warum kann ich das, was
ErstelleTestobjektzurückgibt nicht als Referenz nachTestobjekt(Testobjekt &value)übergeben? Als Fehler wird mir angesagt:Test.cpp: In function `int main()': Test.cpp:17: error: no matching function for call to `Testobjekt::Testobjekt(Testobjekt)' Test.cpp:5: note: candidates are: Testobjekt::Testobjekt(Testobjekt&) Test.cpp:4: note: Testobjekt::Testobjekt()
-
du gibst ein temporaeres objekt in der funktion zurueck und im konstrukor hast du ne referenz. geht nicht. musst eine const-referenz daraus machen damit das klappt
Meep Meep
-
Wertrenz schrieb:
Warum kann ich das, was
ErstelleTestobjektzurückgibt nicht als Referenz nachTestobjekt(Testobjekt &value)übergeben? Als Fehler wird mir angesagt:Weil sich temporäre Werte nicht an Referenzen binden lassen (aber als konstante Objektreferenz geht es "Testobjekt(Testobjekt const & value)"; Davon abgesehen ist dies eigentlich auch der übliche Weg, wenn du übergaben nicht modifizieren willst).