CList et win32

Signaler
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour,


ma question est simple,

je defini mes classes telquel:


// COORDONNEES

class VERTEX           
           
    // Build our Vertex Class

{

public:

    float x, y;       
           
        // 3D coordinates x, y

           
           
           
    // hauteur

};


// CLASS GROUPANT LES 4 SOMMETS DE LA FACE

class QUAD           
           
        // Build our Quads Structure

{

public:

    VERTEX vertex[4];   
           
    // Array of 4 vertices   
           
           

};           
           
           


// CLASS D'UN COUCHE

class LAYER           
           
        // Build our LAYER Class

{

public:

    int num_quads;       
           
   

    float hauteur, zstart;

    vec4 color;

    QUAD* quad;

   

    LAYER(float z, float h, float r, float g, float b, float a)

    {

        this->num_quads=0;

        this->zstart = z;

        this->hauteur = h;

        this->quad = new QUAD[50000];

        this->color.set(r, g, b, a);

    }


    void AddValue(float _centrex, float _centrey, float _qwidth, float _qlenght)

    {

        float x1,x2,x3,x4,y1,y2,y3,y4;

        x1 = _centrex - (_qlenght/2);

        y1 = _centrey + (_qwidth/2);

        x2 = _centrex + (_qlenght/2);

        y2 = _centrey + (_qwidth/2);

        x3 = _centrex + (_qlenght/2);

        y3 = _centrey - (_qwidth/2);

        x4 = _centrex - (_qlenght/2);

        y4 = _centrey - (_qwidth/2);


        this->quad[num_quads].vertex[0].x = x1;

        this->quad[num_quads].vertex[0].y = y1;


        this->quad[num_quads].vertex[1].x = x2;

        this->quad[num_quads].vertex[1].y = y2;


        this->quad[num_quads].vertex[2].x = x3;

        this->quad[num_quads].vertex[2].y = y3;

                   

        this->quad[num_quads].vertex[3].x = x4;

        this->quad[num_quads].vertex[3].y = y4;

    }


    ~LAYER()

    {

        delete this->quad;

    }

   

};


Seulement je ne sais pas vraiment combien de QUAD j'aurais au final! j'aimerai donc passer le faire avec une liste

Est ce possible d'utiliser la CList alors que je programme en win32 sans MFC ?

Si oui comment remplacer mon QUAD en CList?

Sinon quelle methode utiliser?


Merci beaucoup pour votre aide!


jojo

3 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu peux utiliser std::list<QUAD>

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007

Donc dans mon constructeur je met std::list<QUAD> a la place de this->quad = new QUAD[50000];


et avec les fonctions de list je peux ajouter un element, et lire tous les elements?

Comment je peux lire les elements par exemple?

 Normalement je ferai avec ce qui a actuellement

int x1;

LAYER layer;

x1 = layer.quad[2].vertex[1].x;


et avec la list comment je ferai pour lire la meme valeur?


Merci pour ton aide


jojo
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
list comme CList est une liste chainée. L'accès est donc séquentiel (il faut tout parcourir depuis de le début à chaque fois).
Si tu as besoin d'un accès aléatoire (comme pour les tableaux), utilise plutot vector
Tu peux trouver une explication de leur utilisation ici.

_____________________________________
Un éditeur de ressources gratuit pour Windows