C ++:如何将指针传递给另一个类的成员函数?

时间:2014-08-01 11:18:26

标签: c++ callback function-pointers boost-function

当我想将指针传递给Foo()成员的函数时,如何查看类classA的函数classB的签名? 函数update()classB的isntance上调用,并传递classA的对象。在update()内,Foo()的函数classA将传递一个指向回调函数的指针。该函数是classB的成员。 我不能在这里做任何静态的事情。有没有办法做到这一点,也许是boost::function

代码:

class classA
{
 public:
  voif Foo(/*a pointer to a memberfunction of ClassB*/)
};

class classB
{
 classB(){nVal = 0;}
 int nVal;
 public:
 void increment(int n){nVal += n;}
 void update(classA objA)
 {
  objA.Foo(increment)
 }
};

1 个答案:

答案 0 :(得分:4)

您可以将boost::bindboost::function一起使用。

class classA
{
public:
   void Foo(const boost::function<void(int)>& function)
   {
   }
};

class classB
{
public:
   //
   void update(classA objA)
   {
       objA.Foo(boost::bind(&classB::increment, this, _1));
   }
};