Bonjour, j'ai un problème que je ne comprends pas, voici le code:
Le problème est que mon compilateur ne veux pas de la déclaration du deuxième itérateur. Apparemment celà viendrait du type template (Type*), pourquoi ? Comment résoudre ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <map> using namespace std; template<class Type> class Test { public: void bidon() { map<int,int>::iterator it1; // OK map<int, Type*>::iterator it2; // Plante à cause du paramètre Type* } }; int main(int argc, char** argv) { Test<int> test; test.bidon(); return 0; }
Voici les erreurs que mon compilateur me renvoi:
Savez-vous comment résoudre celà ?g++ main.cpp -o test
main.cpp: In member function 'void Test<Type>::bidon()':
main.cpp:16: error: expected `;' before 'it2'
main.cpp: In member function 'void Test<Type>::bidon() [with Type = int]':
main.cpp:25: instantiated from here
main.cpp:16: error: dependent-name 'std::map<int,Type*,std::less<int>,std::allocator<std::pair<const int, Type*> > >::iterator' is parsed as a non-type, but instantiation yields a type
main.cpp:16: note: say 'typename std::map<int,Type*,std::less<int>,std::allocator<std::pair<const int, Type*> > >::iterator' if a type is meant
Merci.
Bouba
Partager