Bonjour à tous,
J'ai un petit souci concernant à une fonctionnalité que je dois implémenter.
J'ai l'idée mais je ne sais pas comment la mettre en pratique en C++.
En fait j'ai un conteneur (mettons un conteneur de la STL) qui contient des pointeurs vers des objects d'une classe A .
J'aimerais bien créer une methode qui permette de parcourir les elements de mon conteneur et qui prenne comme paramettre des fonctions qui puisent s'appliquer à la structure de données A.
J'ai entendu parler de "visitors" et de "funtors" mais je ne sais pas s'ils servent à ça et je ne sais pas comment les implementer.
Mon code doit ressembler à qqch comme ça :
Merci bcp de votre aide !!
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 //declaration de la classe... class A { A(){}; ~A(){}; public : int _number1, number2; }; class Container { //blablabla... //Attribut qui contient pointeurs vers des objets de la classe A std::vector<A*> vectorA; //Methode qui parcours le container et qui applique une fonction ou methode à chaque élement du conteneur walker(UneFonctionGenerique) //UneFonctionGenerique = n'importe quelle fonction valable pour la structure de données A. Comment faire ?? { std::vector<A*>::iterator aIter; for(aIter=vectorA.begin(); aIter!=vectorA.end();aIter++) UneFonctionGenerique(*aIter); //je n'ai aucune idée de comment faire ça } }; funtion displayNumber1() //je ne connais la tête que cette fonction peut avoir, mais je suis libre de l'implementer { std::cout<<_number1; //??? } int main() { //blablabla... Container myContainer; myContainerDeA.walker(displayNumber1); //.... }
Partager