Sé que es posible hacer que una plantilla funcione:
template<typename T>
void DoSomeThing(T x){}
y es posible hacer una clase de plantilla:
template<typename T>
class Object
{
public:
int x;
};
pero, ¿es posible hacer que una clase no esté dentro de una plantilla y luego convertir una función en esa clase en una plantilla? Es decir:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
o algo en la medida en que la clase no es parte de una plantilla, pero la función sí?
Consulte aquí: Plantillas , métodos de plantilla , Plantillas de miembros, Plantillas de funciones de miembros
fuente
Sí, las funciones de miembro de plantilla son perfectamente legales y útiles en numerosas ocasiones.
La única advertencia es que las funciones miembro de la plantilla no pueden ser virtuales.
fuente
La forma más fácil es colocar la declaración y la definición en el mismo archivo, pero puede causar un archivo ejecutable sobredimensionado. P.ej
Además, es posible poner la definición de plantilla en los archivos separados, es decir, ponerlos en archivos .cpp y .h. Todo lo que necesita hacer es incluir explícitamente la creación de instancias de plantilla en los archivos .cpp. P.ej
fuente