| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
carnotinlondon
Registrado: 12 May 2011 Mensajes: 3
| Publicado: 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.
| Publicado: 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
| Publicado: 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.
| Publicado: 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
| Publicado: 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 | |
 |
|
|