== überladen



  • so überlade ich += in meiner Klasse:

    frac& operator+=(const frac& a)
    	{
    		m_zaehler = a.m_zaehler * m_nenner + m_zaehler * a.m_nenner;
    		m_nenner *= a.m_nenner;
    		kuerzen(m_zaehler, m_nenner);
    		return *this;
    	}
    

    == zu überladen bereitet mir Probleme.

    bool operator==(const frac& a, const frac& b)
    

    läuft nicht ('frac::operator ==(const frac &,const frac &)' muss mit einem Parameter deklariert werden).



  • operator== hat bloß einen Parameter, das rechte Objekt, und nicht zwei Parameter.

    Aber es ist besser den operator== als friend zu machen:

    clas frac
    {
        friend bool operator== (const frac&a, const frac&b); // Jetzt schon 2, weil er nicht mehr zur Klasse gehört sondern nur Friend ist
    };
    
    bool operator== (const frac&a, const frac&b) // kein frac:: weil er nicht zur klasse gehört
    {
        // impl
    }
    

    Warum das so ist findest du mit Hilfe der Suchfunktion in vielen Threads erklärt.

    MfG SideWinder



  • 👍


Anmelden zum Antworten