Problem mit structuren und zeigern
-
Also...
Hallo erstmal.Ich will mit OpenGL eine Art Spiel erstellen und habe dazu die folgenden structs deklarieret: ( Das Problem hat aber ausschließlich mit c++ und nicht mit OGL zu tun, also hab ich das Problem in diesem Forum hier geschildert )
struct Vertex { GLfloat x, y, z; GLfloat tx, ty; }; struct Viereck { Vertex a, b, c, d; }; struct Dreieck { Vertex l, o, r; }; struct Sektor { std::string Name; int AV, AD; Dreieck * dreieck[50]; Viereck * viereck[50]; }; Sektor sektor1;Soweit allse klar.
Jetzt wollte ich Werte zuweisen. Seht unten...sektor1.Name = "Standardsektor."; // alles klar... sektor1.AV = 1; sektor1.viereck[0] = new Viereck; // bis hier kein Fehler sektor1.viereck[0].a.x = -10.0f; // siehe unten ...Jetzt bekomme ich folgende Fehlermeldung, die ich mir absolut nicht erklären kann.
`a' has not been declared request for member of non-aggregate type before '.' tokenIch wäre euch sehr dankbar, wenn ihr mir weiterhelfen könntet.
Ich hab auch schon den Strukturoperator zwischen sektor1 und viereck probiert, auch dann geht es nicht, ich bekomme die folgende Fehlermeldung:base operand of `->' has non-pointer type `Sektor'Danke schon mal im voraus.
mfg
Tim
-
sektor.viereck[0] ist ein Pointer, also muss danach der Pointerzugriffsoperator:
sektor1.viereck[0]->a.x = -10.0f;
-
...und überleg Dir mal, ob es nicht sinnvoller ist, statt
Dreieck * dreieck[50];
Viereck * viereck[50];einen der STL Container, z.B. std::vector zu benutzen.
-
oh, danke.
-
Oder
std::tr1::array(boost::array).Brauchst du wirklich die Dynamik manueller Speicherverwaltung? Dann solltest du auch immer an
deletedenken...
Sonst könntest du auch ein Array von Stackobjekten erstellen.