Lorsque je compile les éléments suivantsproblème avec une spécialisation de modèle pour une classe dérivée
#include <iostream>
#define XXX 1
#define YYY 2
class X
{
public:
template< int FLD >
void func();
};
template<> void X::func<XXX>()
{
std::cout << "X::func< " << XXX << " >" << std::endl;
}
class Y : public X
{
public:
};
template<> void Y::func<YYY>()
{
std::cout << "Y::func< " << YYY << " >" << std::endl;
}
template<> void Y::func<XXX>()
{
std::cout << "Y::func< " << XXX << " >" << std::endl;
}
int main(int c, char *v[])
{
X x;
Y y;
}
Je reçois
x.cpp:24: error: template-id 'func<2>' for 'void Y::func()' does not match any template declaration
x.cpp:24: error: invalid function declaration
x.cpp:29: error: template-id 'func<1>' for 'void Y::func()' does not match any template declaration
x.cpp:29: error: invalid function declaration
Je suis en train de se spécialiser dans un modèle d'une classe de base. Est-ce que n'importe qui peut expliquer comment c'est fait ou pourquoi je ne peux pas le faire.
Thx Marque.
Doh !!. Quel muppet je suis ... – ScaryAardvark