CList et win32

jojomillenium Messages postés 136 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 26 mai 2007 - 20 oct. 2006 à 14:47
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 21 oct. 2006 à 20:21
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 oct. 2006 à 18:42
Tu peux utiliser std::list<QUAD>

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
jojomillenium Messages postés 136 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 26 mai 2007
21 oct. 2006 à 20:06
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 oct. 2006 à 20:21
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
0
Rejoignez-nous