Vector sortieren
-
Walpurgisnacht schrieb:
und wie müsste dass dann ausschauen, weil mein Operator nicht funktioniert.
Steht im Link oben von jhkhjk unter 3.8
-
OK, danke. Ist eigentlich gar nicht so schwer :p
Ich bekomme jetzt nur noch als Fehlermeldung vom Compiler, dass ich zu viele Parameter benutzebool operator==(gefunden const& lhs, gefunden const& rhs) { return &lhs == &rhs; }
-
Du hast den Operator hoffentlich ausserhalb der Klasse definiert.
class gefunden { /* ... */ }; bool operator==(gefunden const& lhs, gefunden const& rhs) { return &lhs == &rhs; }
-
Ich dachte man kann einen Operator auf zwei Möglichkeiten definieren: innerhalb der Klasse und außerhalb der Klasse. In Zukunft werd ichs immer außerhalb machen
Problem bleibt aber weiterhin:
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\algorithm(41): error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'gefunden' akzeptiert (oder keine geeignete Konvertierung möglich)
-
Versuchs mal damit:
bool operator==(gefunden const& rhs);
Diese Funktion so in der Klasse definieren. Dann kannst du das linke Objekt über den this-Operator aufrufen.
PS:
Bin mir nicht so ganz sicher obs klappt. Probiers mal aus
-
hmmm, scheint nicht zu funktionieren. Andere Ideen?
-
.....
-
Es hat doch alles davor funktioniert. Nur als die For-Schleife mit dem find() gekommen ist kam diese Fehlermeldung.
-
Lass das
const
weg bzw. leg eine Version mitconst
und eine ohneconst
an.Das hier ist so übrigens keine gute Idee:
return &lhs == &rhs;
Damit vergleichst du nämlich nur die Adressen. Du solltest aber die inneren Werte vergleichen, um zu überprüfen, ob ein Objekt "gleich" ist. Denn es ist unwahrscheinlich das alle Objekte die gleiche Adresse haben. Was viel wahrscheinlicher ist: Sie könnten gleiche Werte haben und darauf kommt es an.
-
Hast du den operator in der Klasse auch als friend deklariert?