Título: [SOLUCIONADO] Plantilla de una clase con estructuras Publicado por: jesules79 en 18 Diciembre 2013, 22:05 pm Hola a todos,
Tengo hecha una practica sobre la clase List, que implementa una lista de enteros. Ahora tengo que modificarla para que acepte cualquier tipo de dato mediante plantillas. He visto el uso de las plantillas de clases en C++, y he mirado ejemplos en internet. El caso es que uso la estructura Node, que representa un nodo de la lista que contiene el elemento y un puntero al siguiente elemento. El elemento debe ser de cualquier tipo. El caso es que lo aplico y me da un montón de errores que no sé en qué fallo. list.h Código: #ifndef _LIST_H_ list.cpp Código: #include "list.h" menulista.cpp Código: #include "list.h" A ver si me podeis ayudar. Un saludo Título: Re: Plantilla de una clase con estructuras Publicado por: jesules79 en 18 Diciembre 2013, 23:58 pm Bueno, pues ya está solucionado,
Aparte de que no estaba bien el código (mirar cómo ha tratado la estructura y el resto), es que me daba el siguiente error: Código: collect2: ld devolvió el estado de salida 1 El compilador necesita tener el código que implementa la función siempre visible para crear la versión personalizada al tipo de T sobre la marcha cuando la necesita. Cuando separas .h y .cpp y en main.cpp haces los includes de los .h, el compilador no sabe como generar el cuerpo personalizado ni a char ni a int, y por lo tanto quedan indefinidos. Por eso protesta. La solución es poner en el mismo .h de la plantilla todas las definiciones y las implementaciones, ya sea como funciones inline, si son cortas, o despues de la definición de la clase si son más complicadas, dejando la definición de la clase más limpia. Pongo el codigo para que sirva de ejemplo por si a alguien le sirve list.h Código: #ifndef _LIST_H_ menulista.cpp Código: #include "list.h" Espero que a alguien le sirva de ayuda |