Ayuda para declarar la estructura de C ++, con una matriz flotante como uno de sus miembros
-
06-07-2019 - |
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
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.