Template: map::const_iterator wird nicht erkannt?
-
Guten Tag,
der folgende Code erzeugt beim Compilieren eine Fehlermeldung
template<class K> K function(const std::vector<K>& vec, const K& key) { std::vector<K>::const_iterator it = vec.begin(); if( it == vec.end() ) return key; else return *it; }Fehlermeldung:
test.cpp:9: Fehler: expected `;' before »it«
test.cpp:10: Fehler: »it« wurde in diesem Gültigkeitsbereich nicht definiertWo bitte liegt da der Fehler? Wenn ich anstatt des Templates z.B std::string eintrage funktioniert es.
Vielen Dank für eure Antworten.
WhiteLife
-
Wenn in Templates komplexere Typen vorkommen, die von Templateparametern abhängen, brauchst du das Schlüsselwort
typename, um dem Compiler klarzumachen, dass es sich um einen Typ handelt.typename std::vector<K>::const_iterator
-
template<class K> K function(const std::vector<K>& vec, const K& key) { typename std::vector<K>::const_iterator it = vec.begin(); if( it == vec.end() ) return key; else return *it; }
-
Danke für die Antworten, jetzt geht es

-
WhiteLife schrieb:
Danke für die Antworten, jetzt geht es

Hast du denn auch verstanden, warum es nicht ging? Diese Sache zu verstehen ist wichtig bei der Arbeit mit Templates.