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
   | ...
#include <boost/function.hpp>
#include <boost/bind.hpp>
...
 
class Truc {
  public:
    Truc() {};
    ~Truc() {};
 
  void setFunc0(boost::function<void(int, double, std::string)> myFunc0) {
    _myFunc0 = myFunc0;
  }
 
  void uneMethodeQuiUtiliseLaFonctionCallBack(...) {
    if( _myFunc0 )
      _myFunc0(10, 0.2, "toto");
  };
  ...
 
  protected:
    boost::function<void(int, double, std::string)> _myFunc0;
 
  ...
};
 
class Machin {
  public :
    Machin() { 
      _myTruc.setFunc0(boost::bind(&Machin::uneSuperFonctionMembre, this, _1, _2, _3));
    };
    ~Machin() {};
 
  protected :
    void uneSuperFonctionMembre(int i, double d, std::string s) {
      ...
    };
 
  Truc _myTruc;
  ...
}; | 
Partager