return pointer auf Objekt -> operator überladen



  • Hallo,

    ich möchte den = Operator überladen, dabei gibt es aber das grundsätzliche Problem, dass ich ein Objekt zurückgeben muss.

    CMyObject* CMyObject::operator= (CMyObject* rs)
    {
    
    }
    

    Ich könnte ein neues (temporäres Objekt anlegen, aber wann soll ich das wieder löschen??

    CMyObject* CMyObject::operator= (CMyObject* rs)
    {
      CMyObject* ls = new CMyObject*
      ls->member1 = rs->member1;
      return ls;
    }
    

    Ich könnte mit Referenzen arbeiten, aber irgendwann ist mein Object ungültig, wenn ich die Funktion verlasse?!?

    CMyObject& CMyObject::operator= (CMyObject* rs)
    {
      CMyObject ls;
      ls.member1 = rs->member1;
      return &ls; //oder return *ls ?? Muss ich immer ausprobieren, kann ich 
                    mir nie merken
    }
    

    Wie macht man das am Besten?? 😕 😕 😕



  • CMyObject& CMyObject::operator= (const CMyObject& rs)
    {
      // kopiere die Daten von rs, falls this Speicher belegt hat, den wieder freigeben
      return *this;
    }
    

    Du musst kein weiteres Objekt erzeugen, sondern Du kopierst die Daten aus dem Objekt rs in Dein aktuelles Objekt.


Anmelden zum Antworten