C/Visual C - Templates en C++

 
Vista:

Templates en C++

Publicado por Alvaro (122 intervenciones) el 02/09/2002 22:45:17
Estoy tratando de crear templates para clases en C++ utilizando Visual C++ 6.0, he creado pilas, colas, arboles binarios balanceados y esoy tratando de crear un b-tree, que guardan cualquier tipo de dato. El problema es que no puedo hacerlos si no pongo la definicion de la clase y sus funciones miembro en el mismo archivo .h, es decir, no puedo utilizar el archivo .cpp correspondiente porque si lo hago, el compilador me dice que no están definidas las funciones miembro de las clases.
Alguien puede decirme ¿por que pasa esto?.
gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Templates en C++

Publicado por Oliver Ramirez (339 intervenciones) el 03/09/2002 05:28:36
hace poco tube el mismo problema y mi problema fue que olvide colocar en la definicion de la clase dentro del .cpp la definicion de la plantilla completa.

si quieres que te de mas detalle, enviame el .h y el .cpp de uno de tus proyectos para ver si encuentro el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Templates en C++

Publicado por chuidiang (677 intervenciones) el 03/09/2002 07:12:14
Efectivamente existe ese problema. Debes colocar el código en el .h
El problema es que al compilar un .cpp con templates, no se mete nada de código en el .obj, puesto que el compilador todavía no sabe los tipos. Luego, cuando compilas y linkas el programa principal, esos métodos que son template faltan y da error de linkado.
La solución (aunque a mi no me gusta) es poner el código en el .h
Si miras las preguntas en este foro, verás un poco más abajo una conversación entre "El Mogur" y yo sobre el tema.
Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Templates en C++

Publicado por Alvaro (122 intervenciones) el 03/09/2002 18:23:31
Ok. Entiendo.
Busque la discución.
Gracias.
Tengo un poco de problemas para entender lo de los archivos .OBJ, siempre he ignorado los pasos de la compilación, pero creo que ahora se torna necesario.
He tenido otro tipo de problemas curiosos y los he solucionado, pero no se como, lo que hize, ayudo a solucionar el problema.
Por ejemplo, trabajando con Oracle, escribí codigo en SQL en un archivo PC que pasé por un precompilador (herramienta de oracle llamada ProC) el cual generó el codigo C necesario para conectarse a la base de datos. El problema es que no pude compilar hasta cambiar en la configuración de 'Proyect - Settings - C/C++', en la categoria 'Precompiled Header Files' la opcion 'Use precompiled header file (.pch)', en la que hace referencia a StdAfx.h, por la opcion 'Automatic use of precompiled headers', en la que deje el cuadro de texto en blanco.
El ProC (Precompilador) genera codigo en el que reemplaza las sentencias SQL por codigo C/C++ encerrado entre { } , define sus estructuras al comienso del archivo, y hace referencia a archivos .h ubicados en la raiz de oracle.
el problema es que sin cambiar esta configuracion el compilador no encontraba los tipos de datos definidos en los archivos .h de oracle, que el codigo generado por ProC utilizaba.
Se te ocurre por que al cambiar esta opcion, todo funciona normalmente ?.
Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Templates en C++

Publicado por chuidiang (677 intervenciones) el 03/09/2002 20:49:24
Lo siento, lo mio es C++ en unix y se muy poco (nada) de base de datos.
Imagino que según la opción que pongas buscará ficheros .h o .pch por los directorios de oracle. Unos estarán y los otros no, pero no me hagas mucho caso.
Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar