stl-set mit <-Operator in eigenem Namespace?
-
Hallo,
ich habe folgendes Problemich habe ein set aus Objekten einer eigenen Klasse
std::set<Foo> bar;Damit das funktioniert, muss ich den <-Operator überladen:
Foo.h:class Foo { //[...] bool operator<(const Foo& other) const; }Foo.cpp:
bool Foo::operator<(const Foo& other) const { \[...] }Das funktionierte bis jetzt super.
Nun hab ich aber einen namespace zugefügt, der auch die Foo-Klasse enthält.
Jetzt meckert der Compiler:/usr/include/c++/4.3/bits/stl_function.h:230: Fehler: no match für »operator<« in »__x < __y«Wie bekomme ich das gelöst?
Gruß,
DanielPS: gcc-Version 4.3.2 (Ubuntu 4.3.2-1ubuntu12)
-
Hi,
hmm laut Herrn Koenig, hätte er die Funktion finden müssen ?Edit: Ach, operator< muss global sein
Dann sollte es funktionieren.
-
Den
operator<solltest du nur überladen, wenn dieser auch Sinn macht (man sollte ohne nachzuschauen erkennen, was der Operator vergleicht). Einfach grundsätzlich, damit man ein Sortierkriterium hat, bringt es das nicht. Da nimmst du lieber ein Funktor oder eine Funktion.
-
den operator< solltest du besser als freie FUnktion überladen. siehe dazu auch hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html
-
Danke für Eure Hilfe,
ich habs hinbekommen!Gruß,
Daniel