Kopierkonstruktor / Klasse als Rückgabewert



  • Hallo!

    Ich programmiere seit ein paar Jahren C/C++
    und habe jetzt ein kleines Projekt C++/CLI zu erledigen.

    Nun habe ich ein paar kleine Fragen bezüglich Klassen als Rückgabewert.
    Gibt es keinen Standardmässigen Kopierkonstruktor mehr?
    Wie muss ich den dann einer Klasse hinzufügen?
    Folgender Code lässt sich nicht erstellen.

    CMgError MyFunction(void)
    {
    	CMgError err
    
    	...
    
    	return err;
    }
    

    Danke für die Hilfe!

    Gruß Lars



  • Hi,

    ich hatte möglicherweise mal ein ähnliches gelagertes Problem bei dem mir geholfen wurde (Quelle: http://www.c-plusplus.net/forum/viewtopic-var-t-is-246944.html ). Hier mal noch ein Codeschnipsel:

    public ref class CMgError : public Form1 {
    public:
    CMgError ^MyFunction(void) 
    { 
    
        return gcnew CMgError; 
    
    }
    };
    

    //Aufruf in irgend einer Funktion

    CMgError ^test = gcnew CMgError;
    	CMgError ^test1 = test->MyFunction();
    

    Da CMgError aber nichts enthält, was kopiert werden könnte, wird auch nichts kopiert.

    MfG



  • Ich hoffe ich hab die Frage richtig verstanden. Also der Copy-Constructor für die Klasse A sieht bei mir so aus:

    //copyconstructor
    A::A(const A& rhs)
    {
        *this=rhs;
    }//copyconstructor ende
    //========================================
    //
    // Assignmentoperator Overload
    //
    //========================================
    A& A::operator =(const A& rhs)
    {
        // Prevent self assignment. 
        if( this == &rhs )
            return *this;
        //kopieren
        m_Variable_1=rhs.m_Variable_1;
        ...
        // Return a reference to *this object.
        return *this;
    }// Assignmentoperator Overload ende
    

    Den Umweg über den = Operator kann man ja bei Bedarf abkürzen.


Anmelden zum Antworten