Bonjour !

j'ai un problème avec l'utilisation de templates associées à l'algorithme sort d'un vector. J'ai une structure 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; 
};
et une fonction template

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; 
}
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
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>);
}
Cependant cela ne compile pas. Il me renvoie à une erreur dans xutility??
(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.