Bonjour !
j'ai un problème avec l'utilisation de templates associées à l'algorithme sort d'un vector. J'ai une structure template
et une fonction template
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template <class Key_Type, class Data_Type> struct proj { proj(Key_Type i, Data_Type s) : valeur(i), ident(s) {} Key_Type valeur; Data_Type ident; };
que je veux utiliser à l'intérieur d'une classe elle_même template pour réaliser un sort sur un vecteur de structure proj
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <class Key_Type, class Data_Type> bool sort_cles(const proj<Key_Type,Data_Type>& a1, const proj<Key_Type,Data_Type>& a2) { return a1.valeur < a2.valeur; }
Cependant cela ne compile pas. Il me renvoie à une erreur dans xutility??
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
20 using namespace std; template <class Key_Type, class Data_Type> class classe_template { public: void fonction(); }; template<Key_Type,Data_Type> void classe_template::fonction(){ vector<proj<Key_Type,Data_Type>> _map2; _map2.push_back(proj<Key_Type,Data_Type>(0.25, 2)); _map2.push_back(proj<Key_Type,Data_Type>(5057.056, 6)); _map2.push_back(proj<Key_Type,Data_Type>(2.47527, 3)); _map2.push_back(proj<Key_Type,Data_Type>(0.247527, 1)); sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>); }
(c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1> c:\program files\microsoft visual studio 8\vc\include\algorithm(2822) : voir la référence à l'instanciation de la fonction modèle 'bool std::_Debug_lt_pred<bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &),proj<Key_Type,Data_Type>,proj<Key_Type,Data_Type>>(_Pr,_Ty1 &,_Ty2 &,const wchar_t *,unsigned int)' en cours de compilation
1> with
1> [ ) et ça continue
où il manquerait une spécification de type. La fonction sort_cles seule fonctionne. Je ne vois pas trop d'où cela peut venir.
Merci pour votre aide.
Partager