begin process at 2008 07 05 23:52:03
1 205 401 membres
368 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Liste chainée de class dans une class... [ Divers / Général ] (jojomillenium)

Liste chainée de class dans une class... le 12/11/2006 13:08:23

jojomillenium
Bonjour,

Je fait un programme en API sans MFC,
J'ai une class du genre:

class VERTEX                            // Build our Vertex Class
{
public:
    GLfloat pt[12];                        // 3D coordinates x, y
                                        // hauteur
};

// CLASS GROUPANT LES 4 SOMMETS DE LA FACE
class QUAD                                // Build our Quads Structure
{
public:
    int num_pts;
    bool visible;
    int type;
    GLdouble* bottom;
    GLdouble* top;
    VERTEX* vertex;
};

// CLASS D'UN COUCHE
class LAYER                                // Build our LAYER Class
{
public:
    int num_quads;
    bool visible, existe;
    float hauteur, zstart, h, penetration;
    char* nom_cif;
    char* nom_couche;
    vec4 color;
    QUAD* quad;   

    LAYER()
    {
        this->num_quads=0;
        this->zstart = 0.0;
        this->hauteur = 0.0;
        this->h = 0.0;
        this->color.set(0, 0, 0, 1.0);
        this->visible=true;
        this->nom_cif = ";";
        this->nom_couche = ";";
    }

    void SetLayer(char* _nom_cif, char* _nom_couche, float z, float h, float p, float r, float g, float b, float a)
    {
        this->nom_cif = _nom_cif;
        this->nom_couche = _nom_couche;
        this->num_quads=0;
        this->zstart = z;
        this->hauteur = h;
        this->penetration=p;
        this->h = h;
        this->color.set(r, g, b, a);
        this->visible=true;
        this->existe=true;
    }

   
    void AddValue(int _type, int _num_pts, float* _tab_pts, int _symbole, int _top_symbole, bool _visible)
    {

        this->quad[num_quads].type        = _type;
        this->quad[num_quads].num_pts    =_num_pts;
        this->quad[num_quads].bottom    = new GLdouble[_num_pts*3];
        this->quad[num_quads].top        = new GLdouble[_num_pts*3];
        this->quad[num_quads].vertex    = new VERTEX[_num_pts];
        this->quad[num_quads].top_symbole    = _top_symbole;
        this->quad[num_quads].symbole    = _symbole;
       
        for(int s=0; s<_num_pts; s++)
        {
            this->quad[num_quads].bottom[s*3] = _tab_pts[s*2];
            this->quad[num_quads].bottom[s*3+1] = this->zstart;
            this->quad[num_quads].bottom[s*3+2] = _tab_pts[s*2+1];
           
            this->quad[num_quads].top[s*3] = _tab_pts[s*2];
            this->quad[num_quads].top[s*3+1] = this->zstart + this->h;
            this->quad[num_quads].top[s*3+2] = _tab_pts[s*2+1];

        }
        for(int c=0; c<_num_pts; c++)
        {
            for(int i=0; i<2; i++)
            {
                int    d=c+i;
                if(d==_num_pts)
                    d=0;
                this->quad[num_quads].vertex[c].pt[i*3]=this->quad[num_quads].bottom[d*3];
                this->quad[num_quads].vertex[c].pt[i*3+1]=this->quad[num_quads].bottom[d*3+1];
                this->quad[num_quads].vertex[c].pt[i*3+2]=this->quad[num_quads].bottom[d*3+2];

                this->quad[num_quads].vertex[c].pt[11-i*3]=this->quad[num_quads].top[d*3+2];
                this->quad[num_quads].vertex[c].pt[11-i*3-1]=this->quad[num_quads].top[d*3+1];
                this->quad[num_quads].vertex[c].pt[11-i*3-2]=this->quad[num_quads].top[d*3];
            }
        }
        this->quad[num_quads].visible=_visible;
        this->num_quads= this->num_quads+1;
    }

    void Del(int _num)
    {
        delete this->quad;
        this->num_quads=0;
        this->quad = new QUAD[_num];
    }
    ~LAYER()
    {}
};

Seulement je ne sais pas combien de quad j'ai au depart! Il sont entré au fur et a mesure!
Est ce que c'est possible de faire une list chainée du type CList mais sans MFC de mon quad ? Si oui comment?
J'ai vu des exemples de list chainée, mais pour une structure ausi complexe ue la mienne je vois pas coment faire!

Merci pour votre aide!

Re : Liste chainée de class dans une class... le 12/11/2006 15:13:29

laurent1024
Utilise les fonction de la stl (librairie standard du c++) avec les deques ou les listes qui utilise les templates.
++

Re : Liste chainée de class dans une class... le 12/11/2006 15:33:49

jojomillenium
Mais comment l utiliser? Je sais que je doit utiliser cette librairie ... mais avec toutes mes imbrication de class, je vois pas comment!


Re : Liste chainée de class dans une class... le 12/11/2006 16:50:07

cosmobob
salut;

#include <list>

// CLASS D'UN COUCHE
class LAYER                                // Build our LAYER Class
{
public:
    int num_quads;
    bool visible, existe;
    float hauteur, zstart, h, penetration;
    char* nom_cif;
    char* nom_couche;
    vec4 color;
    std::list<QUAD*> l_quad;
    // etc...
}

pour ajouter un quad:
QUAD* val = new QUAD;
l_quad.push_back(val);

@+


Classé sous : num, vertex, pts, quad, quads

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS