Operator in einer Klasse



  • Hallo,
    ich versuche mich gerade an einem Bruch programm , ich wollte jetzt zur addition u.s.w von Brüchen nicht immer die methoden aufrufen sondern mit arithmetischen Operatoren arbeiten.

    ich bekomme aber immer folgende fehlermeldung :
    bruch::operator+(bruch,bruch) muss entweder null oder ein argument nehmen

    es sieht beim mir so aus im code:
    int operator+(bruch a, bruch b);

    int bruch::operator+ (bruch a, bruch b)
    {
    zaehler=a.zaehler*b.nenner+b.zaehler*a.nenner;
    nenner=a.nenner*b.nenner;

    }

    int main dann wie folgt:

    bruch a,b,c;

    c=a+b;

    vielen dank

    nick



  • den op+ außerhalb der klasse machen ist feiner.

    bruch operator+ (bruch a, bruch b)
    {
    bruch c;
    c.zaehler=a.zaehler*b.nenner+b.zaehler*a.nenner;
    c.nenner=a.nenner*b.nenner;
    }



  • oder c (in main) muss ein int sein da dein operator int zurückliefert 😉



  • Moin, ich schieb mal ne Frage nach, das Thema scheint beantwortet, daher spricht hoffentlich nichts dagegen.

    Aber wieso ist es feiner, wenn man die Operatoren global und nicht in der Klasse überschreibt? Ich habe das bisher noch nie gemacht, daher kann ich mir jetzt auch nicht vorstellen, was da so Vor- und/oder Nachteile sein könnten.

    // Edit: Rechtschreibfehler korrigiert.



  • mantiz schrieb:

    Aber wieso ist es feiner, wenn man die Operatoren global und nicht in der Klasse überschreibt? Ich habe das bisher noch nie gemacht, daher kann ich mir jetzt auch nicht vorstellen, was da so Vor- und/oder Nachteile sein könnten.

    zum teil wegen
    bruch::bruch(int zaehler,int nenner);//bruch zaehler/nenner basteln
    bruch::bruch(int ganzzahl);//bruch ganzahl/1 basteln
    nebst
    bruch b=5+bruch(2,3);//5 wird automagisch nach bruch konvertiert,
    //dann klappt auch das mit dem +.


Anmelden zum Antworten