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)

dimanche 12 novembre 2006 à 13:08:23 | Liste chainée de class dans une class...

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!

dimanche 12 novembre 2006 à 15:13:29 | Re : Liste chainée de class dans une class...

laurent1024

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

dimanche 12 novembre 2006 à 15:33:49 | Re : Liste chainée de class dans une class...

jojomillenium

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


dimanche 12 novembre 2006 à 16:50:07 | Re : Liste chainée de class dans une class...

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);

@+



Cette discussion est classé dans : num, vertex, pts, quad, quads


Répondre à ce message

Sujets en rapport avec ce message

CList et win32 [ par jojomillenium ] Bonjour, ma question est simple, je defini mes classes telquel: // COORDONNEES class VERTEX                            // Build our Vertex Class { pub Probleme avec new() non crée pour certaine valeur... [ par jojomillenium ] Bonjour,J'ai un probleme qui est apparu de je ne sais ou alors que ca marchais avant une certain modif que je vais expliquer.J'ai des classes:class VE Convertion d'un double en hexadecimal (IEEE-754) [ par Cphil51 ] Salutation a tous.Je cherche a convertir un double en notation hexadécimale. J'ai deja essayé pour un float (plus simple car il prend que 32 bits), ce erreur : associer une image à une Ctrlist [ par jerry72000 ] Bonjour, j'ai un petit soucis dans mon projet (pour mon bts), en fait je voudrais associer des photos (format jpeg) à une Ctrlistet et les afficher en bug [ par jmp777 ] Bonjour à tous,je suis debutant et je doit corriger une erreur,l'application bug sur cette petite partie en m'affichant l'erreur qui est dans ce sprin scripte d'une requête d'insertion [ par benlac_o ] Bonjour, j'ecris un script shell, le but c'est d'inserer des valeurs dans une tables, comme vous pouvez le voire dans la requête ci-dessous, je veux i Champ scalaire [ par sem16 ] Hello,j'ai un petit probleme avec OpenGL. J'ai un strip qui est constitue de mesh triangulaire (maillage triangulaire) en 2D et j'aimerais associer à Profondeur de champs [ par Grizou0 ] Bonjour, je suis novice avec la librairie GL ( Borland C++6).Apparement, les vertex visuel sur l'ecran sont limité entre -45.0 et +45.0 sur l'axe Z en BESOIN D'AIDE [ par gersen ] bonjour a vous voila j'ai besoin d'aide j'ai un pt'it probleme avec mon programme mon programme consiste a chercher d'abord un chemins entre 2 station


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 3,151 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.