Ajuda com declarando estrutura C ++, com uma matriz com flutuador tal como um dos seus membros

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

Pergunta

Eu queria saber se alguém poderia detectar o que está errado com a minha declaração de estrutura e uso. No momento eu tenho uma estrutura e desejo de variedade flutuador loja como um de seus membros.

Meu 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;
};

Então eu tentei encher o struct:

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};

Erro:

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
Foi útil?

Solução

matrizes de decaimento para ponteiro-se primeiro elemento da matriz na maior parte dos contextos, como é o caso com xcords e ycords. Você não pode inicializar a estrutura como esta. Então, você tem que inicializar os membros explicitamente:

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

Você também estão faltando initializers para poli [3] se eu entendi corretamente. Coloque os valores apropriados. Caso contrário, haverá inicialização padrão - é isso que você quer

?

Outras dicas

Tente

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};

Eu acho que você está esperando a inicialização para copiar os elementos de cada matriz em sua estrutura. Tente inicializar os elementos da matriz em sua estrutura individualmente, dizem com um laço for.

Não existe um "construtor" para uma matriz flutuante que irá copiar os elementos de uma outra matriz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top