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 :

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);
//....
}
Merci bcp de votre aide !!