Gleich Operator überladen



  • Ich hab ein paar Operatoren überladen, aber der Gleich Operator funktioniert nicht richtig.

    //bei der Ausführung
           TZahl a;
           TZahl b;
            TZahl c;
            int d;
            a=500;
            b=258;
            c=a*b;
            d = c;
    
    // in der klasse selbst
    TZahl& TZahl::operator= (const TZahl &aZahl)
    {
          return *this;
    }
    //Oder 
    TZahl TZahl::operator= (const TZahl aZahl)
    {
          return aZahl;
    }
    

    Bei beiden Variationen gibt er nur eine leere Klassen zurück und ich weis nicht warum😕



  • Edit: Blödsinn, sry.

    Die Überladung ist etwas falsch.

    a=b musst du ansehen als a.operator=(b); wie dir hier auffällt kommt der Rückgabewert des = operator NICHT in a. Diese Zuweisung musst du eben in der Funktion durchführen. Machst du aber nicht.



  • Kannst du das vielleicht in Programm Code hinschreiben?



  • class MyInt{
        int wert;
    public:
        MyInt(int i):wert(i){} //Konstruktor
        //alle möglichen Funktionen
        MyInt& operator=(const MyInt& i){
            wert=i.wert;  //hier erfolgt die Wertzuweisung
            return *this;
        }
    };
    
    int main(){
        MyInt a(5),b(7),c(9);
        c=b=a;  //c und b werden danach ebenfalls den Wert 5 enthalten.
    }
    

    Ich hoffe ich habe jetzt keine Fehler gemacht. Falls doch bitte sagen.



  • OK Danke
    Nur die Operator Funktion war mir wichtig.
    🙂


Anmelden zum Antworten