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.