Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas con el linker y templates

Iniciado por Tarzan, 08 de Diciembre de 2007, 12:56:52 PM

« anterior - próximo »

Tarzan

Buenas a todos/as

Estoy utilizando templates para crear una lista que contenga objetos de cualquier tipo.
Tengo una clase Lista.h y una clase Nodo.h que emplean templates.
Algunos de vosotros ya me habéis aclarado que los templates se compilan o interpretan en el momento de acceder a sus métodos.
Es decir, imagino que puedo tener un método mal escrito y este no dará errores hasta que lo invoque desde cualquier sitio...

Mi problema es que, cuando trato de añadir un objeto a la lista, el linker se queja y me devuelve estos errores:

[Linker Error] Unresolved external 'Lista<Cliente>::~Lista<Cliente>()' referenced from C:\UTILIDADES\PROGRAMACION\BORLAND6\PROJECTS\GINECOLOGIA\MAIN.OBJ

[Linker Error] Unresolved external 'Lista<Cliente>::insertarAlPrincipio(Cliente)' referenced from C:\UTILIDADES\PROGRAMACION\BORLAND6\PROJECTS\GINECOLOGIA\MAIN.OBJ


Esto ocurre en el Main.cpp al incluir Lista.h
Si, en lugar de incluir Lista.h escribo #include "Lista.cpp" no salen esos errores. ¿Alguien puede decirme la razón?
¿Por qué no puedo incluir el lista.h?... Pienso que la clase o la plantilla están bien porque, de no estarlo, me daría error al incluir el Lista.cpp y no ocurre así.
Estoy un poco perdido con esto...

Saludos.



swapd0

Los templates deben de estar definidos en el fichero .h, ovidate de tener .h y .cpp cuando uses templates.

Una pregunta, ¿por que no usas las STL?