[C con Clase] Varios ficheros en un proyecto

Alejandro alepelexo en yahoo.es
Lun Abr 16 16:01:15 CEST 2007


Hola.

Muchas gracias a todos aquellos que habéis contestado y a ti en especial, Juan Antonio. Esto que me has explicado me ha funcionado a la perfección, pero en el capítulo del preprocesador había una directiva que era #pragma. Si no recuerdo mal, se podía usar #pragma once, que lo que hacía era algo similar a lo que hace el #ifndef __FUNCIONES_H__ y demás. ¿Estoy en lo cierto?

MUCHAS GRACIAS y un saludo, Alejandro.

El pasado 2007-04-13 21:18:40, Juan Antonio escribió:
 
JA> Hola Alejando,
JA> de nada. Otra buena práctica en los .h es la siguiente:
JA> Si el fichero se llama por ejemplo Funciones.h, al principio del fichero 
JA> teclear:
JA> #ifndef __FUNCIONES_H__
JA>   #define __FUNCIONES_H__
JA> Y al final del mismo:
JA> #endif
JA> Con eso se evita que se incluyan más de una vez el mismo archivo. Pruébalo. 
JA> Si no funciona mándame los ficheros y le echo un ojo sobre el Dev-C++.
JA> Un saludo,
JA> Juan Antonio.
JA> ----- Original Message ----- 
JA> From: "Alejandro" <alepelexo en yahoo.es>
JA> To: <cconclase en listas.conclase.net>
JA> Sent: Friday, April 13, 2007 9:01 PM
JA> Subject: Re: [C con Clase] Varios ficheros en un proyecto
JA> Muchas gracias por vuestra ayuda, sobre todo a ti, Juan ANtonio. He aplicado 
JA> lo que me dices pero me sigue dando unn problema. Iré explicando mis 
JA> ficheros para ver si os es más fácil así solucionar el problema:
JA> 1. "Principal.cpp" Aquí tengo la función main(). Al final llamo a otra 
JA> función definida en el fichero "Funciones.cpp". En el fichero "Funciones.h" 
JA> se incluyen los prototipos de esa función y otras, por lo que en los 
JA> "#include" también incluyo "Funciones.h" además de "iostram" y otros como 
JA> "cstring".
JA> 2. "Funciones.h" Aquí tengo los prototipos de funciones. Algunas de estas 
JA> funciones trabajan con objetos de la clase "Personaje" por lo que en este 
JA> fichero incluyo la línea "#include "Clases.h"
JA> 3. "Funciones.cpp" Aquí se encuentran las definiciones de los prototipos 
JA> anteriormente puestos en "Funciones.h". Por supuesto, incluyo este fichero 
JA> de cabecera
JA> 4. "Clases.h" Aquí se encuentra la clase en sí, con sus miembros y datos. Lo 
JA> que no incluyo son las definifones de las funciones de esa clase.
JA> 5. "Clases.cpp" Y por último aquí tengo las definiciones de las funciones 
JA> miembro de la clase "Personaje". Por supuesto, incluyo el fichero, 
JA> "Clases,h".
JA> Muy bien, ahora va el problema en sí. En la fase del "linking", el Dev-C++ 
JA> me da un error. Pone una cosa del estilo de :
JA> "multiple definition of 'void Personaje::LeeDatos()
JA> first defined here
JA> "multiple definition of 'void Personaje::MuestraNombre()
JA> first defined here
JA> ....
JA> Y así con todas las funciones miembro de la clase. ¿Cuál es el problema?
JA> Siento haber sido tan pesado y un saludo, Alejandro
JA> _______________________________________________
JA> Lista de correo Cconclase Cconclase en listas.conclase.net
JA> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
JA> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
JA> _______________________________________________
JA> Lista de correo Cconclase Cconclase en listas.conclase.net
JA> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
JA> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase