Ayuda para declarar la estructura de C ++, con una matriz flotante como uno de sus miembros

StackOverflow https://stackoverflow.com/questions/627512

Pregunta

Me preguntaba si alguien podría detectar qué está mal con mi declaración de estructura y uso. Por el momento tengo una estructura y deseo almacenar la matriz flotante como uno de sus miembros.

Mi código:

struct Player{
float x[12];
float y[12];
float red,green,blue;
float r_leg, l_leg;
int poly[3];
bool up,down;
};

Luego intenté llenar la estructura:

float xcords[12] = {1,1,1,1,1,1,1,1,1,1,1,1 };
float ycords[12] = {1,1,1,1,1,1,1,1,1,1,1,1 };
Player player = {xcords,ycords,1,1,1,2,2,true,true};

Error:

1>.\template_with_console.cpp(35) : error C2440: 'initializing' : cannot convert from 'float [12]' to 'float'
1>        There is no context in which this conversion is possible
1>.\template_with_console.cpp(35) : error C2440: 'initializing' : cannot convert from 'float [12]' to 'float'
1>        There is no context in which this conversion is possible
¿Fue útil?

Solución

Las matrices decaen al puntero al primer elemento de la matriz en la mayoría de los contextos, como es el caso de xcords y ycords . No puede inicializar la estructura de esta manera. Por lo tanto, debe inicializar los miembros explícitamente:

Player player = {
        {1,1,1,1,1,1,1,1,1,1,1,1 }, // xcords
        {1,1,1,1,1,1,1,1,1,1,1,1 }, // ycords
        1,1,1,                      // red, green, blue
        2,2,                        // right, left
        {0,1,2},                    // poly[3]   -- missing?          
        true,true};                 // up, down

También le faltan inicializadores para poli [3] si lo entiendo correctamente. Poner en los valores apropiados. De lo contrario, habrá una inicialización predeterminada: ¿es eso lo que desea?

Otros consejos

Probar

Player player = {{1,1,1,1,1,1,1,1,1,1,1,1 },
                 {1,1,1,1,1,1,1,1,1,1,1,1 },
                 1,1,1,
                 2,2,
                 {},
                 true,true};

Creo que está esperando que la inicialización copie los elementos de cada matriz en su estructura. Intente inicializar los elementos de la matriz en su estructura individualmente, digamos con un bucle for .

No hay "constructor" para una matriz flotante que copiará los elementos de otra matriz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top