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 '.' token
    

    Ich 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 delete denken... 😉

    Sonst könntest du auch ein Array von Stackobjekten erstellen.


Anmelden zum Antworten