Error con plantilla de función miembro
Pregunta
estoy consiguiendo error de compilación en el código de abajo.
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>();
}
};
Solución
VC6 no soporta plantillas de funciones miembros. De hecho, tienes varias soluciones:
Mover func()
fuera de la definición de la clase
template<typename type> void func()
{
type t;
t.func();
}
o reescritura callme()
void callme()
{
A a;
a.func();
}
o plantilla de clase uso
class C
{
public:
template<class T> struct func
{
void operator()()
{
T t;
t.func();
}
};
void callme()
{
func<A>()();
}
};
Otros consejos
La definición de func<T>()
no especifica su tipo de retorno, que no es válido en C ++.
Debe ser:
template<typename type> void func()
{
type t;
t.func();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow