Aiuta a dichiarare la struttura C ++, con un array float come uno dei suoi membri
-
06-07-2019 - |
Domanda
Mi chiedevo se qualcuno potesse individuare ciò che non va nella mia dichiarazione di struttura e utilizzo. Al momento ho una struttura e desidero memorizzare l'array float come uno dei suoi membri.
Il mio codice:
struct Player{
float x[12];
float y[12];
float red,green,blue;
float r_leg, l_leg;
int poly[3];
bool up,down;
};
Ho quindi provato a riempire la struttura:
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};
Errore:
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
Soluzione
Gli array decadono nel puntatore al primo elemento dell'array nella maggior parte dei contesti, come nel caso di xcords
e ycords
. Non è possibile inizializzare la struttura in questo modo. Quindi, devi inizializzare esplicitamente i membri:
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
Mancano anche gli inizializzatori per poly [3] se ho capito bene. Inserisci i valori appropriati. Altrimenti ci sarà l'inizializzazione predefinita - è quello che vuoi?
Altri suggerimenti
Prova
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};
Penso che ti aspetti che l'inizializzazione copi gli elementi di ciascun array nella tua struttura. Prova a inizializzare singolarmente gli elementi dell'array nella tua struttura, ad esempio con un ciclo for
.
Non esiste un " costruttore " per un array float che copierà gli elementi di un altro array.