Spécialisations partiels de template: accès aux membres.
Bonjour,
Le code suivant ne compile pas:
Code:
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:
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...