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.


Anmelden zum Antworten