La Web del Programador: Comunidad de Programadores
 
    Pregunta:  8994 - PROBLEMAS CON TEMPLATES
Autor:  Manuel Kobashigawa
tengo problemas cuando trato de compilar un projecto que contiene un 'template class'.
el proyecto contiene 3 programas:
- un main.cpp
- un prg.cpp y
- un prg1.cpp (este es un template class).
prg.cpp y prg1.cpp tiene cada uno, definidos sus respectivos prg.h y prg1.h
en main.cpp tengo lo sgte:
#include "prg.h"
#unclude "prg1.h"

template class prg1<prg> ;
int main()
{
prg1<prg> p;
return 0;
}
me da error que no estan definidas las funciones de prg.cpp
estoy usando djgpp 2.81.
cualquier consejo es util.
gracias

  Respuesta:  Melchor Viso
Bueno. Hace algunos años, tambien me paso a mi, eso que me leí enterita la primera edición con 'Ejemplos' de Bjarne Stroutoup. La solución: Los patrones de clase no son código, son declaraciones susceptibles de convertirse en código cuando se aplica el patrón (como haces en la linea "prg1<prg> p; "). Esto quiere decir que las funciones de un patron de clase se deben de incluir en el mismo fichero de cabecera. Algunos programadores, por nostalgia, crean falsos ficheros fuente, que en realidad se autoincluyen en los ficheros de cabecera.

//My header
template<class X> className
{
int myMethod(int myarg);
};

template<class X> int className<X>::myMethod(int myarg)
{
return 0;
}

//End My header