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?