Überladen von operatoren



  • Hi,

    Ich hab eine Klasse Bruch. und ich würde jetzt gerne der selbstgeschriebenen klasse einen wert übergeben.

    also prinzip so

    Bruch test;
    
    test=3/4;
    

    wie kann ich das machen?

    meine klasse ist folgendermaßen aufgebaut:

    class Bruch
    {
            private:
    
                    int zaehler;
                    int nenner;
            public:
                    Bruch();
                    Bruch(int z,int n);
                    Bruch operator * (Bruch b);
                    Bruch operator * (int b);
                    Bruch operator *= (Bruch b);
                    Bruch operator + (Bruch b);
                    int Getzaehler(void);
                    int Getnenner(void);
                    void Setzaehler(int z);
                    void Setnenner(int n);
    };
    


  • test = Bruch(3,4);
    


  • Direkt so wie angegeben kannst du es nicht machen - die Division 3/4 wird IMMER als Ganzzahl-Division durchgeführt und du kannst bestenfalls das Ergebnis dieser Division über einen op= oder Ctor entgegennehmen. Aber du kannst mit der bisherigen Definition test = Bruch(3,4); schreiben, um den Bruch "3/4" zu erzeugen.

    Ein anderer Ansatz wäre test=Bruch(3)/Bruch(4); (dafür mußt du noch den operator/ definieren analog zu deinem operator*

    PS: op*= sollte übrigens eine Referenz auf *this zurückgeben 😉


Anmelden zum Antworten