Bonjour,
Voici mon code source:
Code :
- #include <iostream>
- #include <vector>
- #include <boost/bind.hpp>
- #include <boost/function.hpp>
- using namespace std;
- class model
- {
- public:
- void show(){cout<<"show"<<endl;}
- void move(int x, int y){cout<<"move"<<endl;}
- };
- class A
- {
- public:
- A()
- {
- vModel.push_back(new model());
- vModel.push_back(new model());
- }
- void make(void (model::*fct)())
- {
- for(int i=0;i<vModel.size();i++)
- {
- boost::bind(fct, vModel[i])();
- }
- }
- private:
- vector<model *> vModel;
- };
- int main()
- {
- A a;
- a.make(&model::show);
- //a.make(&model::move);
- return 0;
- }
|
La ligne "a.make(&model::show);" permet d'appeler la méthode "show" de tous les modèles. C'est simple car la méthode ne prend aucun argument.
Mais comment feriez-vous pour passer les 2 arguments à la méthode "move" ? Et j'aimerais bien un système qui fonctionne avec n'importe quel méthode qui pourrait se trouver dans la class "model".
Merci d'avance...
Message édité par casafa le 21-11-2007 à 20:41:08