Frage zu STL und Operator Überladen



  • Hi,

    ich habe ein Problem, an dem ich mir den Kopf zerbreche, die Suchfunktion des BOards sowie das Google Orakel brachten leider auch keine Erleuchtung:

    Ich habe eine Klasse Canvas, die ein set<BaseGUIObject> objectList definiert
    wenn ich objectList.insert oder .erase benutzen möchte, bekomme ich den Compilerfehler: error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const BaseGUIObject' (or there is no acceptable conversion)
    Dabei habe ich den Operator in der Klasse BaseGUIObject überladen, alles sieht wie folgt aus:

    bool BaseGUIObject::operator<(BaseGUIObject other)  {
        return getSize()<other.getSize();
    }
    
    set<BaseGUIObject, less<BaseGUIObject> > objectList;
    set<BaseGUIObject, less<BaseGUIObject> >::iterator i;
    
    void Canvas::deleteObject(BaseGUIObject object) {
     objectList.erase(object);
    

    Wäre Klasse, wenn da jemand eine Antwort drauf wüsste! 🙂



  • bool BaseGUIObject::operator<(BaseGUIObject 
    const& other) const {
        return getSize()<other.getSize();
    }
    

    fühlt sich für mich viel besser an.

    volkard (noch mit konsole-browser)



  • 🙄 Lynx?



  • Vielen Dank, das hat geholfen! 🙂



  • sollte operator< nicht besser non-member sein?


Anmelden zum Antworten