|
begin process at 2008 07 05 23:52:03
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
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
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|