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 und getSpalte das const nachtragen ...)



  • Inwiefern muss ich denn ein const nutzen?

    Meinst du meinen überladenden ==-Operator?


  • Mod

    @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...


Anmelden zum Antworten