当我想将指针传递给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)
}
};
答案 0 :(得分:4)
您可以将boost::bind
与boost::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));
}
};