Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Tarzan en 08 de Diciembre de 2007, 12:56:52 PM

Título: Problemas con el linker y templates
Publicado por: Tarzan en 08 de Diciembre de 2007, 12:56:52 PM
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.
Título: Problemas con el linker y templates
Publicado por: Lessman en 08 de Diciembre de 2007, 01:21:29 PM
...
Título: Problemas con el linker y templates
Publicado por: Warchief en 08 de Diciembre de 2007, 01:32:20 PM
http://www.stratos-ad.com/forums3/viewtopic.php?p=109860&highlight=#109860

:?:


Para la respuesta elaborada:
http://www.zator.com/Cpp/E4_12_1b.htm
Título: Problemas con el linker y templates
Publicado por: swapd0 en 15 de Diciembre de 2007, 10:48:17 PM
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?