Operatotor <= implementieren obwohl == und < vorhanden ist?



  • Hallo,

    wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.
    Gilt das gleiche dann auch für den <= operator wenn der == und < operator implementiert ist?


  • Mod

    Unwi schrieb:

    Hallo,

    wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.
    Gilt das gleiche dann auch für den <= operator wenn der == und < operator implementiert ist?

    Nein, und die Prämisse ist ebenfalls unzutreffend.



  • Unwi schrieb:

    wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.

    Grundsätzlich musst du immer alle Operatoren definieren. operator== implizert nicht operator!=. Wenn du Schreibfaul bist gibt es für solche Fälle in der Boost-Bibliothek Aushilfe.

    cu André



  • also heist dass man folgendes nicht machen sollte

    class foo
    {
    public:
        bool operator == (foo const& rhs)
        {
            if ( this->a == rhs.a )
                return true;
            else
                return false;
        }
    
        bool operator != (foo const& rhs)
        {
            if ( (*this) == rhs )         // also sowas nicht machen???
               return false;
            else 
               return true;
        }
    private:
       int a;
    }
    

    weil genau das hab ich vorhin bei einer klasse gemacht xD



  • Skym0sh0 schrieb:

    also heist dass man folgendes nicht machen sollte
    ...
    weil genau das hab ich vorhin bei einer klasse gemacht xD

    Lies dir nochmal dein ersten Post durch, überlege dir was dann die Antwortenden gedacht haben müssen, und überdenk nochmal deine Schlußfolgerung.

    Kurz gesagt: Du kannst natürlich Operatoren so definieren das sie auf andere zurückgreifen (Dies wird z.B. bei += und + sehr häufig gemacht). Wie du es aber geschrieben hattest, konnte man daraus eigentlich nur annehmen, das du nur den einen operator geschrieben hast.

    cu André



  • achso *gegen kopf schlag*

    stimmt jez hab ichs verstanden...

    ok alles klar


Anmelden zum Antworten