Bonjour,
Le code suivant ne compile pas:
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
 
template<class T> class A {
public:
   A(const T&P_oT0) :m_Membre(P_oT0) {}
protected:
   T m_Membre;
};
 
template<> class A<double> {
public:
   double MaFonction() {return m_Membre*1.5;}
};
 
int main()
{
   A<double> L_aDouble(4.0); // KO
   A<int> L_aInt(4); // OK
   A<char> L_aChar('e'); // OK
   return 0;
}
J'ai une erreur m'indiquant que m_Membre est inconnu dans MaFonction et le constructeur A(const T&P_oT0) n'est pas trouvé.
Je suis obligé de faire:
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
template<class T> class A {
public:
   A(const T&P_oT0) :m_Membre(P_oT0) {}
protected:
   T m_Membre;
};
 
template<> class A<double> {
public:
   A(const double&P_oT0) :m_Membre(P_oT0) {}
   double MaFonction() {return m_Membre*1.5;}
 
protected:
   double m_Membre;
};
 
int main()
{
   A<double> L_aDouble(4.0); // OK
   A<int> L_aInt(4); // OK
   A<char> L_aChar('e'); // OK
   return 0;
}
J'ai loupé quelque chose? Sinon, si je doit reprendre toute les définitions dans mes spécialisations, cela devient un peu galère...