Hilfe bei der Erklärung der C ++ Struktur, mit einer Schwimmeranordnung als eines seiner Mitglieder
-
06-07-2019 - |
Frage
Ich habe mich gefragt, ob jemand könnte vor Ort, was mit meiner Struktur Deklaration und Verwendung falsch ist. Im Moment habe ich eine Struktur und wünschen float-Array als eine von ihren Mitgliedern zu speichern.
Mein Code:
struct Player{
float x[12];
float y[12];
float red,green,blue;
float r_leg, l_leg;
int poly[3];
bool up,down;
};
Ich habe dann versucht, Füllen der Struktur:
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};
Fehler:
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
Lösung
Arrays Zerfall pointer-to-first-Element des Arrays in den meisten Zusammenhängen wie bei xcords
und ycords
ist. Sie können nicht die Struktur wie folgt initialisieren. So müssen Sie die Mitglieder initialisieren explizit:
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
Sie sind auch fehlende initializers für Poly [3], wenn ich das richtig verstanden. Setzen Sie in den entsprechenden Werten. Ansonsten wird es Standardinitialisierung sein - ist das, was Sie wollen
?Andere Tipps
Versuchen
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};
Ich glaube, Sie die Initialisierung erwar die Elemente jedes Feldes in Ihrer Struktur zu kopieren. Versuchen Sie, die Array-Elemente in Ihrer Struktur zu initialisieren einzeln, etwa mit einer for
Schleife.
Es gibt kein „Konstruktor“ für einen float-Array, das die Elemente eines anderen Array kopiert.