Bonjour,
Je suis face à un problème dans un projet de cpp assez conséquent (à ma petite échelle tout du moins) avec de l'opengl . Je vais essayer de vous synthétiser mon problème :
Mon problème est le suivant : lorsque je mets un Projectile dans la Mobile_liste son affichage se fait comme si la brique dans projectile n’était pas particulaire mais simplement une brique. C'est à dire qu'il va faire appelle à Brique::dessinerBrique(); au lieu de faire appelle à Brique_particulaire::dessinerBrique();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 /** * Classe représentant l'entité de base de la représentation des mobiles. Ces entitées * sont lié dans une structure d'abres les unes aux autres pour former un mobile. * expl : la brique Tete est lié à la brique corps du personnage qui est lié aux briques * bras etc ... */ class Brique { protected: /** * vecteur des briques suivantes dans l'arbre */ std::vector<Brique> suivants; public: /** * Constructeur */ Brique(...); /** * Fonction dessinant la brique */ virtual void dessinerBrique(); }; class Brique_particulaire: public Brique { public: /** * Constructeur */ Brique_particulaire(...); /** * Fonction dessinant la brique particulaire */ void dessinerBrique(); }; /** * Un mobile est un objet affichable constitué d'un arbre de briques */ class Mobile { protected: /** * Arbre des briques de ce modele. */ Brique* arbre_briques; public: blabla... /** * Constructeur */ Mobile() { } /** * dessine le mobile en parcourant recursivement toutes ses briques et * les dessinant une a une les unes par rapport aux autres */ void dessinerMobile(); }; /** * Un projectile est un mobile particulier qui contient uniquement une brique particulaire */ class Projectile: public Mobile { public: Projectile(); }; /** * \class Mobiles_liste : Classe liste de tout les mobiles utile pour * l'affichage entre autre. */ class Mobiles_liste : public std::list<Mobile> { public : /** * Fonction affichant tout les mobiles */ void draw() { for (std::list<Mobile>::iterator it = this->begin(), end = this->end(); it != end; ++it) { it->dessinerMobile(); } } };
Je ne comprends pas pourquoi et je n'arrive pas à contourner le problème...
En espérant avoir été suffisamment clair, merci par avance![]()
Partager