In meiner Header-Datei habe ich die std :: map eingefügt und verwende den entsprechenden Namespace.
Einer meiner Mitglieder ist:
Und in meiner .cpp-Datei versuche ich etwas zu tun, was ich schon seit einiger Zeit häufig mache:
%Vor%Das Obige wird sogar in einem der Beispiele für die Verwendung von std :: map bei cplusplus.com erwähnt. Obwohl ich in anderen Teilen des Codes, die keine Kompilierungsfehler verursachen, ziemlich genau das gleiche getan habe, erhalte ich in dieser Zeile folgenden Fehler von Cygwin:
%Vor%Was mir seltsam vorkommt. Irgendeine Idee, was könnte falsch sein? (Mein Header ist natürlich in meiner .cpp enthalten)
Es scheint, dass in dem Bereich, in dem diese Schleife existiert, die Map const ist. Ist zum Beispiel die Schleife in einer Klassenmethode wie const deklariert?
%Vor%oder als const-Argument übergeben, so?
%Vor%Wenn dies der Fall ist, müssen Sie Const-Iteratoren verwenden:
%Vor%Wenn Sie C ++ 11 verwenden, sollten Sie das Schlüsselwort auto verwenden:
%Vor%Da Sie in dem Fall, in dem Sie gezeigt haben, const-Iteratoren verwenden müssen, können Sie sie nicht zum Ändern der Karte oder der darin enthaltenen Daten verwenden. Das ist korrekt, und es ist eine gute Sache:).
Nun, der Fehler besagt, dass Sie versuchen, einen Const_iterator auf einen Iterator zu setzen. Sie sagen, dass pT_Spam
ein Mitglied ist. Ist es ein Mitglied eines const Objekts? Wenn dies der Fall ist, geben begin () und end () const_iterators zurück.
Sie müssen const_iterators für Maps verwenden, also sollte es sein:
%Vor%Edit: Wie bereits oben erwähnt, ist das richtig, aber für ganz falsche Gründe (Maps haben nicht-konstante Iteratoren. Was habe ich genau gedacht? Ich weiß es nicht). Höchstwahrscheinlich ist Ihre Karte als const definiert (wie in einer anderen Antwort angegeben).
Tags und Links c++ map compiler-errors iterator