Ajuda com declarando estrutura C ++, com uma matriz com flutuador tal como um dos seus membros
-
06-07-2019 - |
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
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.