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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top