Bonjour,
Je ne sais pas trop si je doit mettre ceci dans le forum algorithme ou C++.
Pour commencer, voici mon code :
Explication :
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 #include <iostream> #include <vector> using namespace std; class model { public: void show() { cout<<"show"<<endl; //... } void move() { cout<<"move"<<endl; //... } //et plein d'autres méthodes }; class A { public: A() { vModel.push_back(new model()); vModel.push_back(new model()); vModel.push_back(new model()); } void make() { for(int i=0;i<vModel.size();i++) { if(true) //condition qui vérifie si l'on doit faire des opération sur le modèle vModel[i]->show(); } } private: vector<model *> vModel; }; int main() { A a; a.make(); return 0; }
--------------
J'ai une classe "model" qui contient plein de méthode.
J'ai une classe "A" qui contient un vecteur de "model". Cette classe permet de faire certaines opérations sur les model si ils suivent certaines conditions ("if(true)" dans mon exemple).
Mon problème, c'est si je veux faire une opération autre que "show", je vais devoir passer un paramètre à make pour lui dire quel opération faire :
Bref ça va me faire un code rempli de "if" et "else if"...ce qui ne fera pas très beau. Et si les méthodes de model prennent différents paramètres, ça compliquera tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void make(int op) { for(int i=0;i<vModel.size();i++) { if(true) { if(op==0) vModel[i]->show(); else if(op==1) vModel[i]->move(); //etc } } }
Une autre solution serait de faire autant de méthode dans la classe "A" qu'il y a de méthode dans la classe "model" mais ça ne me semble pas encore être une solution très propre.
Y a -il une solution plus correcte ?
Merci d'avance...
Partager