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 ErstelleTestobjekt zurückgibt nicht als Referenz nach Testobjekt(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 ErstelleTestobjekt zurückgibt nicht als Referenz nach Testobjekt(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).


Anmelden zum Antworten