Hilfe bei der Erklärung der C ++ Struktur, mit einer Schwimmeranordnung als eines seiner Mitglieder

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

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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top