Bonjour a tous,
Etant encore a la decouverte du monde merveilleux des templates j'ai rencontré une erreur en essayant de spécialisé une fonction membre de ma classe template. Voila le code :
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
21
22
23
24
25
 
template<typename T>
class Vector2D
{
public:
....
//ma fonction à spécialiser :
template<typename T2> static T2 norm(const Vector2D<T> & myVector2D); //fonction statique template permettant de calculer la norme et de retourner le type T2.
};
 
//declaration de la fonction :
template<typename T>
template<typename T2>
T2 Vector2D<T>::norm(const Vector2D<T> & myVector2D)
{
	...//aucun probleme avec la declaration de cette fonction
}
 
//specialisation souhaité :s
template<typename T>
template<>
int Vector2D<T>::norm(const Vector2D<T> & myVector2D)
{
	...//erreur de compilation la fonction ne correspond a aucun modele???
}
Voila le probleme je n'ai pas trouvé de solution pour spécialiser cette fonction (excepté remplacer le retour du type T2 par un argument supplémentaire!!) est-ce un probleme de syntaxe ou simplement c'est impossible?
merci d'avance
Bonne journée