List mit find() vergleichen
-
Hallo zusammen,
ich habe folgendes Problem:
Ich versuche mit Hilfe eines Iterators eine Liste meiner Klasse "Knoten" zu vergleichen. Dazu nutze ich die "find()" Methode.....
// Knoten zum Vergleichen
Knoten X;// Hier meine beiden Listen
list<Knoten> M;
list<Knoten>::iterator M_it;// Hier ist mein Vergleich, ob in der Liste mein Knoten X
M_it = find(M.begin(), M.end(), X);// "=="-Operator bekannt machen in der Klasse Knoten
bool Knoten::operator == (Knoten& k)
{
if (this->getZeile() == k.getZeile() && this->getSpalte() == k.getSpalte()) {
return true;
}
else {
return false;
}
}Der Inhalt jedes Knoten enthält eine Zeile und eine Spalte (jeweils int)..
Allerdings bekomme ich immer die Fehlermeldung:
"Binärer Operator"==": Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ "const_Ty" akzeptiert (oder keine geeignete Konvertierung möglich)"Danke für eure Unterstützung und Liebe Grüße!!
-
Befasse dich mal mit dem Schlüsselwort
const
.
-
@Bashar ich muss dazu sagen dass ich ziemlicher Anfänger bin... Es geht um eine Projektarbeit für die Uni, und ich muss nurnoch diese eine Abfrage realisieren
-
Das sind echt Grundlagen, es ist ziemlich riskant, ein vermutlich mehrmonatiges Projekt anzugehen, ohne die zu beherrschen.
Die Funktion sollte so definiert werden:
bool Knoten::operator == (const Knoten& k) const { return getZeile() == k.getZeile() && getSpalte() == k.getSpalte(); }
(IMHO ohne die Getter zu benutzen, aber ich weiß nicht, wie die Variablen bei dir heißen.)
(Und wahrscheinlich musst du jetzt auch bei
getZeile
undgetSpalte
dasconst
nachtragen ...)
-
Inwiefern muss ich denn ein const nutzen?
Meinst du meinen überladenden ==-Operator?
-
@charName sagte in List mit find() vergleichen:
Inwiefern muss ich denn ein const nutzen?
Wie soll man das beantworten, wenn du dich nicht mit
const
beschäftigt hast?
-
@Bashar DANKE!!!! Ich habs hinbekommen...