• Sábado 14 de Diciembre de 2024, 20:30

Autor Tema:  Creando Un Array De Estructuras  (Leído 2686 veces)

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Creando Un Array De Estructuras
« en: Jueves 25 de Agosto de 2005, 00:01 »
0
Qué tal, me gustaría saber si hay alguna forma de lograr compilar el siguiente código (o similar):

Código: Text
  1.  
  2. struct Estructura {
  3.   int a;
  4.   int b;
  5. };
  6.  
  7. Estructura newEstructura(int, int);
  8.  
  9. int main() {
  10.   Estructura arrayDeEstructuras = {
  11.     newEstructura(0, 1),
  12.     newEstructura(1, 1)
  13.   };
  14.  
  15.   return 0;
  16. }
  17.  
  18. Estructura newEstructura(int _a, int _b) {
  19.   Estructura estructura = {_a, _b};
  20.   return estructura;
  21. }
  22.  
  23.  

Resulta que el compilador de VC++ (versión 6) me da error al tratar de crear arrayDeEstructuras usando la función newEstructura (por supuesto, puedo crearlo agregando cada campo en lugar de usar la función), sin embargo, este mismo código lo he compilado con MinGW (con Dev-C++) sin problemas, ¿alguien sabe si es posible copilar dicho código desactivando (o activando) alguna opción del compilador? ¿O simplemente no se puede?

Gracias de antemano :).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Creando Un Array De Estructuras
« Respuesta #1 en: Jueves 25 de Agosto de 2005, 09:44 »
0
Hola

Creo que el error esta cuando declaras el array, se te ha olvidado ponerle el numero de elementos de este, si quieres hacerlo estatico, o un puntero y luego reservar memoria con malloc, si lo haces dinamico.
Solo cambie eso en tu codigo y ya compila bien (en visual studio.net aunque deberia valer tambien para 6.0)

Código: Text
  1.  
  2.  
  3. struct Estructura {
  4.  int a;
  5.  int b;
  6. };
  7.  
  8. Estructura newEstructura(int, int);
  9.  
  10. int main() {
  11.  Estructura arrayDeEstructuras[2] = {  // <---- AQUI ESTABA EL ERROR
  12.    newEstructura(0, 1),
  13.    newEstructura(1, 1)
  14.  };
  15.  
  16.  return 0;
  17. }
  18.  
  19. Estructura newEstructura(int _a, int _b) {
  20.  Estructura estructura = {_a, _b};
  21.  return estructura;
  22. }
  23.  
  24.  

Espero que te sirva

salu2  :hola:

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Creando Un Array De Estructuras
« Respuesta #2 en: Martes 30 de Agosto de 2005, 05:51 »
0
gracias por el comentario, voy a probar :). Como dije, mi duda es porque en MinGW pude compilarlo sin problemas :P. Luego comento qué tal :).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Creando Un Array De Estructuras
« Respuesta #3 en: Jueves 8 de Septiembre de 2005, 02:42 »
0
Pues nop, no he podido compilar, me sale un error indicando que no es posible "realizar una conversión de ESTRUCTURA a int" :?.

Probé tanto con VC++ 6 como con VC++ .NET (2002, ¿qué versión usaste?).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Creando Un Array De Estructuras
« Respuesta #4 en: Jueves 8 de Septiembre de 2005, 05:47 »
0
Ojo con C++ por que aunque "compile" no implica que el código esté bien. Y si compila bien en el MinGW puede ser por un relajamiento en las restricciones de compilación.

El error: "no es posible realizar una conversión de ESTRUCTURA a int" es algo que definitivamente esperaría por que tal cual se está asignando a un elemento de ese arreglo y definitivamente el compilador no debería suponer que uno quiere hacer otra cosa al indicar ese código. Y como no va a hacer lo que quisiéramos que hiciera sino lo que escribimos que hiciera...

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Creando Un Array De Estructuras
« Respuesta #5 en: Jueves 8 de Septiembre de 2005, 08:19 »
0
Hola

Lo compile con Visual Studio.net y ahora he probado con DevC++ y en ninguno de los 2 da errores.Y ni si quiera warnings, ni errores de ejecucion

Asi que ....... el problema no es el codigo.Haz un copy paste del que te puse yo a ver q tal ......

salu2  :hola:

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Creando Un Array De Estructuras
« Respuesta #6 en: Domingo 25 de Septiembre de 2005, 02:30 »
0
Gracias por los comentarios :). Disculpen no poder responder pronto, pero no tengo internet :oops:

Diodo: efectivamente, compilé sin problemas en Dev-C++, de hecho, de ello surgió mi duda puesto que con MinGW no tuve ningún problema, pero al probar con VC++ si. Creo que quizá se debe a alguna opción del compilador habilitada (o deshabilitada) por defecto en las versiones más recientes, yo usé VC++ .net 2002, ¿cuál tienes?

Amilius: gracias por el recordatorio :).

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Creando Un Array De Estructuras
« Respuesta #7 en: Domingo 25 de Septiembre de 2005, 09:13 »
0
Hola

Yo tengo Visual Studio.net 2003  :)  Ya seria raro que en el 2002 no funcionara.Si puedo lo probare con el 6.0 a ver q tal

salu2  :hola:

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Creando Un Array De Estructuras
« Respuesta #8 en: Domingo 25 de Septiembre de 2005, 20:13 »
0
Pues, como suponía, con el VC++ 6 no compila ni uno ni otro.  :P

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Creando Un Array De Estructuras
« Respuesta #9 en: Domingo 2 de Octubre de 2005, 03:21 »
0
Cita de: "Amilius"
Pues, como suponía, con el VC++ 6 no compila ni uno ni otro.  :P
Jeje, ahora puedo decir que eso es, hay alguna opción diferente entre las versiones :D.

¿Y te sale ese error que mencioné?

GRACIAS por todo, ahora me faltará encontrar qué es lo que hace que en la versión que probó Diodo si compile.

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Creando Un Array De Estructuras
« Respuesta #10 en: Domingo 2 de Octubre de 2005, 15:16 »
0
...textualmente sale:

error C2440: 'initializing' : cannot convert from 'struct Estructura' to 'int'