Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con listas y templates

Estas en el tema de Problema con listas y templates en el foro de C/C++ en Foros del Web. Buenas gente. Tengo un problema con una Lista ordenada (es circular y doblemente enlazada pero eso da lo mismo ahora creo). El caso es que ...
  #1 (permalink)  
Antiguo 07/04/2009, 07:10
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Problema con listas y templates

Buenas gente.
Tengo un problema con una Lista ordenada (es circular y doblemente enlazada pero eso da lo mismo ahora creo). El caso es que la lista es una plantilla que se implementa con una cabecera de este tipo:

Código:
template <typename T, bool(*Menor)(const T &, const T &)>
class tListaOrd : protected tLista<T>
A todo esto, estamos utilizando el C++ Builder 5.0 .
Entonces creamos una función que tenga un par de parametros, en plan menor(const tipo &a, const tipo &b) y a la hora de utilizar esta lista, enn el h de una clase, creamos una variable privada tal que así:

Código:
tListaOrd<tipo*, menor>* lista;
Lo que hace que nos salte este error al compilar:

Código:
[C++ Error] UtCompany.h(20): E2299 Cannot generate template specialization from 'tListaOrd<T,Menor>'
[C++ Error] UtCompany.h(20): E2040 Declaration terminated incorrectly
Y no sabemos seguir a partir de aquí.

¿Alguna idea?
Gracias de antemano.
  #2 (permalink)  
Antiguo 07/04/2009, 08:17
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con listas y templates

Si tuviera algo que compilar intentaria ayudarte.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 07/04/2009, 08:36
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Hombre, podría subir la práctica pero es una putada si no sabes de qué va.
Ese fallo "suele" salir por algo?
  #4 (permalink)  
Antiguo 07/04/2009, 08:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con listas y templates

No se, supongo que algun error de sintaxis, no uso productos de Borland.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 07/04/2009, 08:55
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Haces bien en no usarlos, y si te gustara Borland harías bien en no utilizar una versión tan obsoleta como el 5.0 xD
Subo el código y te lo paso, aunque la sintaxis de c++ en borland a lo mejor no es exactamente igual que la del que uses :S

Edito: no me deja mandarte el link en un privado

Última edición por SeRGiNaToR; 07/04/2009 a las 09:16
  #6 (permalink)  
Antiguo 07/04/2009, 09:19
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Aquí está el código.
La lista implicada es UtListaOrd.h (que he tenido que ponerle los métodos inline pues lo otro no funciona) y el fallo nos lo da enn UtCompany.h, en private.
Gracias de antemano y bueno, si no encuentras nada lo entiendo, es aún más difícil si no lo puedes compilar

megaupload.com /?d=8056L45X
  #7 (permalink)  
Antiguo 07/04/2009, 10:06
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con listas y templates

Sacando el asterisco de tVuelo en la linea 20 de UtCompany.h logra encontrar la especializacion:
Código:
tListaOrd<tVuelo, menor>* vuelos;
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 07/04/2009, 10:23
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Si, el problema es que haciendo eso se consigue otro fallo, diciendo que no se puede crear una instancia de la clase abstracta tVuelo, por el T dato de Lista.
Entonces no se si está bien como tú dices, que es como lo teníamos ayer, o con un asterisco en el tVuelo.
El fallo si no se pone el puntero, que ahora es en UtLista.h, " Undefinied structure 'tNodo<tVuelo>' " no tiene mucho sentido. Vale que nosotros trabajemos con dos clases que heredan de Vuelo, que son VueloNormal y VueloBajoCoste, pero se debería de poder hacer un new tNodo<T> donde T fuera tVuelo y no debería de dar error ahí, ¿no?

Última edición por SeRGiNaToR; 07/04/2009 a las 10:33
  #9 (permalink)  
Antiguo 07/04/2009, 11:10
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con listas y templates

OK, volve a poner el *, el problema es la funcion menor de UtListaOrdFunc.h/cpp.

Podes probar con:
bool menor(const tVuelo *&v1, const tVuelo *&v2);

O sino sacando el const en ambos lados (lease UtListaOrd.h y UtListaOrdFunc.h/cpp; asi es como me compilo en VC++).

Sino va, lo siento, pero es mucho codigo (con la VCL en el medio por cierto), traten de arrancar con algo parecido de menor tamaño y haganlo funcionar, despues seguramente podran arreglar esto.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 07/04/2009 a las 11:16
  #10 (permalink)  
Antiguo 07/04/2009, 11:29
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Muchas gracias por haberlo mirado. Voy a seguir probando y cuando saque una solución viable la posteo.
  #11 (permalink)  
Antiguo 07/04/2009, 13:15
 
Fecha de Ingreso: abril-2009
Mensajes: 8
Antigüedad: 15 años
Puntos: 1
Respuesta: Problema con listas y templates

Una preguntilla. Cómo has podido abrirlo en el VC++? He instalado el 2008 Express y no se puede importar el proyecto ni nada similar, la solución sería meter a mano unidad a unidad?
  #12 (permalink)  
Antiguo 07/04/2009, 13:18
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema con listas y templates

Si, yo lo compile desde linea de comandos pero el problema de especializacion es lo mismo que el Builder ... mejor segui con ese por ahora, tendrias que sacar la VCL ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:13.