/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

¿Se puede crear una estructura extern?

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
carnotinlondon



Registrado: 12 May 2011
Mensajes: 3

MensajePublicado: 12/05/2011 3:47 am
Título: ¿Se puede crear una estructura extern?

Hola:

Soy nuevo en el foro y quería saludar a los foreros.
Llevo ya algo de tiempo programando, pero ahora me ha surgido una duda que quizá sea muy básica.
Quiero hacer un programa que, para hacer un cálculo, tome los datos que necesite de un archivo de cabecera. Al principio cree una variable struct en una cabecera y también definí algunas variables de esa estructura y les di valor a los datos. De hecho, definí las variables nuevas de esa estructura como extern, y en un .cpp aparte le di valores a aquellas variables.

Al final de todo, en el archivo Main, pasan dos cosas:
cuando quiero llamar a una de esas variables, (no las he vuelto a dar un valor ni definir de nuevo) me da un error de compilación:


Undefined symbols:
"_hydrogen", referenced from:
_hydrogen$non_lazy_ptr in ccaAP39L.o
ld: symbol(s) not found
collect2: ld returned 1 exit status




El problema es que no sé si se pueden definir variables e inicializarlas a un valor en los archivos de cabecera. Tampoco sé si se pueden crear objetos de una clase determinada en un archivo de cabecera, o los objetos tienen que ser creados dentro de la función main.
Mi interés es que todos esos datos ya están cargados con valores en alguna parte, por que son siempre los mismos, sin tener que cargarlos en la función main.

un saludo grande y, si has llegado hasta este linea, muchas gracias por la atención!!


Carnotinlondon
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 12/05/2011 8:40 am
Título:

Hola,
Puedes declarar como extern hasta una clase.
Tu problema es que si deseas que desde un fichero sea manipulable un objeto definido e inicializado en otro, has de definirlo en ese fichero.
Por eso en los ficheros de cabecera se debería solo definir las cosas. De ese modo se incluye ese fichero en todos los demás y arreglado.
Si ahora incluyes el mismo fichero de cabecera en 2 archivos distintos, te encontrarás con que creas 2 veces la misma variable y tendrás 2 cosas distintas con el mismo nombre y eso te generará un error.
Por qué no pruebas a poner la definición de tus estructuras en un fichero de cabecera distinto y lo incluyes en el resto.

Espero que te sea útil.
Volver arriba
carnotinlondon



Registrado: 12 May 2011
Mensajes: 3

MensajePublicado: 12/05/2011 11:38 am
Título:

Muchas gracias por la respuesta. Entonces, para aclararme, ¿te refieres a qué, en el archivo de cabecera sólo defina la variable y luego la inicialice en el archivo de la función que lo utiliza?

muchas gracias de veras por la respuesta!
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 13/05/2011 3:02 am
Título:

Hola otra vez,
Lo normal es definir la estructura en un fichero de cabecera y crear las instancias e inicializarlas en los ficheros c ó cpp.
De ese modo puedes incluir el fichero de cabecera en los archivos de código que tengan que saber cómo utilizar la variable ó estructura.

Espero que te quede más claro.
Volver arriba
carnotinlondon



Registrado: 12 May 2011
Mensajes: 3

MensajePublicado: 14/05/2011 11:01 am
Título:

Muchas gracias por la respuesta! Y gracias por la paciencia. Lo haré de esa manera.
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com