Programación General > Visual C++
Creando Un Array De Estructuras
Geo:
Qué tal, me gustaría saber si hay alguna forma de lograr compilar el siguiente código (o similar):
--- Código: Text --- struct Estructura { int a; int b;}; Estructura newEstructura(int, int); int main() { Estructura arrayDeEstructuras = { newEstructura(0, 1), newEstructura(1, 1) }; return 0;} Estructura newEstructura(int _a, int _b) { Estructura estructura = {_a, _b}; return estructura;}
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).
Diodo:
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 --- struct Estructura { int a; int b;}; Estructura newEstructura(int, int); int main() { Estructura arrayDeEstructuras[2] = { // <---- AQUI ESTABA EL ERROR newEstructura(0, 1), newEstructura(1, 1) }; return 0;} Estructura newEstructura(int _a, int _b) { Estructura estructura = {_a, _b}; return estructura;}
Espero que te sirva
salu2 :hola:
Geo:
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).
Geo:
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).
Amilius:
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...
Navegación
[#] Página Siguiente
Ir a la versión completa