Bonjour,
J'ai une question pour les fans de templates, mais tout d'abord, voici le code qui illustrera la question :
J'ai donc une classe qui a deux param�tres templates. Dans cette classe, la m�thode g() a un comportement sp�cifique en fonction du premier param�tre, ind�pendemment du second.
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
26
27
28
29
30
31 #include <iostream> #include <string> template<typename T1, typename T2> class A { public: void f(); template <typename T3> void g(); }; template< typename T1, typename T2 > void A<T1, T2>::f() { g<T1>(); } // spécialisation pour T1 = int template< typename T1, typename T2 > template<> void A<T1, T2>::g<int>() { std::cout << 24 << std::endl; } int main() { A<int, std::string> a; a.f(); return 0; }
J'avais tout d'abord pens� � sp�cialiser partiellement la m�thode avec un truc du genre ;
mais ce n'est pas autoris�. Alors j'ai �crit le code plac� plus haut, en me disant que j'allais param�trer la m�thode g() pour ensuite la sp�cialiser ; mais l� encore, le compilateur fait la t�te :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 template<typename T2> void A<int, T2>::g() { ... }
Je crois comprendre qu'il ne veut pas que je sp�cialise une m�thode d'une classe template si je ne sp�cialise pas la classe elle-m�me.Envoy� par g++
Alors maintenant je suis un peu � court d'id�es, je m'en remet donc � vous. Avez-vous une id�e pour m'aider � obtenir ce que je veux ?
Merci
Partager