Bonjour à tous.

Je suis nouveau dans l'utilisation des classes templates. Afin de m'exercer, j'ai écrit le code suivant :
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
template <typename T, int n, int m> class C{
public : int N,M;
C(void)
	{
	this->N = n;
	this->M = m;
	}
void set(int a, int b)
	{
	this->N = a;
	this->M = b;
	}
};
template<typename T, int n, int m> void f1(C<T,n,m> x){
cout<<"f1 : "<<n<<"\t"<<m<<"\n";
}
template<typename T, int n, int m> void f2(C<T,n,m> x){
cout<<"f2 : "<<x.N<<"\t"<<x.M<<"\n";
} 
int main (void){ 
C<int, 0,1> A;
A.set(1,0);
f1(A);
f2(A);
return 0;
}
En sortie on obtient :
Je ne comprends pas pourquoi le résultat de la fonction f1 est différent de celui de f2. Avez-vous une idée ?