Kleines Problem mit map
-
Hallo zusammen,
ich bin beim Programmieren einiger Klassen auf folgendes Problem gestoßen:
std::map<std::string, cSound> mSounds; ** mit mSounds wird irgendwas gemacht ** if (mSounds.find("ausgabe.wav")!=mSounds.end()) { std::cout << "vorhanden" << std::endl; }Nun erhalte ich aber bei der Funktion find immer dutzende gleiche Fehlermeldungen:
":operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : could not deduce template argument for 'const std::reverse_iterator<_RanIt> &' from 'const std::string'
1> c:\programming\tools\microsoft visual studio 8\vc\include\xutility(1842) : see declaration of 'std::operator <'"Hat irgendjemand eine Ahnung, woran das liegen könnte? Ich komme irgendwie nicht drauf, Googlesuche war auch schon erfolglos.
Lg
lfc
-
#include<string> vergessen?
MfG SideWinder
-
mal gucken - ist das eine evtl. ein CONST-Iterator und das andere ein Iterator?
/Edit:
ne beides const iteratorm, das dürfte passen
-

tatsächlich, hatte #include <string> vergessen. danke für die schnelle Hilfe. Da geht man ewig auf Fehlersuche und dann sowas schusseliges...
Aber ich frage mich, warum die Fehlermeldung dann erst in der find-Funktion kommt, und nicht bereits bei der Deklaration
-
lfc schrieb:

tatsächlich, hatte #include <string> vergessen. danke für die schnelle Hilfe. Da geht man ewig auf Fehlersuche und dann sowas schusseliges...
Aber ich frage mich, warum die Fehlermeldung dann erst in der find-Funktion kommt, und nicht bereits bei der Deklaration
Das liegt daran, dass der kleiner-Vergleich des Map-Schlüssels erst in der find-Funktion stattfindet. Das liegt in der Natur von Templates, die erst dann vollständig aufgelöst und kompiliert werden, wenn sie benutzt werden.