Erreur sur le modèle de fonction de membre
Question
J'obtiens l'erreur de compilation dans le code ci-dessous.
class A
{
public:
A()
{
}
~A()
{
}
void func()
{
cout <<"Ha ha ha \n";
}
};
class C
{
public:
C()
{
}
~C()
{
}
template<typename type> func()
{
type t;
t.func();
}
void callme()
{
func<A>();
}
};
La solution
VC6 ne prend pas en charge les modèles de fonction membres. Vous avez fait plusieurs solutions:
Déplacer func()
de la définition de la classe
template<typename type> void func()
{
type t;
t.func();
}
ou rewrite callme()
void callme()
{
A a;
a.func();
}
ou utiliser le modèle de classe
class C
{
public:
template<class T> struct func
{
void operator()()
{
T t;
t.func();
}
};
void callme()
{
func<A>()();
}
};
Autres conseils
La définition de func<T>()
ne précise pas son type de retour, ce qui est invalide en C ++.
Il devrait être:
template<typename type> void func()
{
type t;
t.func();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow