C++ 如何使用boost::bind将类/结构实例作为参数传递给回调?
我一直在寻找并坚持使用C++ 如何使用boost::bind将类/结构实例作为参数传递给回调?,c++,boost-bind,C++,Boost Bind,我一直在寻找并坚持使用boost::bind 到目前为止,使用回调可以很好地工作。 我想使用下面显示的代码片段 class A { public : static int i = 1; }; 但是,我想将这个类实例传递给下面描述的回调函数指针 void Init(void (*Notify)(A *a, int, int,int),int arr[], A *a, value,int left,int right) { } 不能直接使用boostbind来执行
boost::bind
到目前为止,使用回调可以很好地工作。
我想使用下面显示的代码片段
class A
{
public :
static int i = 1;
};
但是,我想将这个类实例传递给下面描述的回调函数指针
void Init(void (*Notify)(A *a, int, int,int),int arr[],
A *a, value,int left,int right)
{
}
不能直接使用boostbind来执行此操作。
Init
函数需要指向具有此签名的自由函数的指针:
void (*)(A *a, int, int, int)
所以您可以实现这样一个:
void foo(A *a, int x, int y, int z)
{
a->whatever(x, y, z);
}
然后调用Init(foo,…)
但它必须是一个自由函数;稍微等效的Boost-Bind表达式将不起作用:
boost::bind(&A::whatever, _1, _2, _3)
为什么这样不行?因为
Init
需要一个免费函数,而不是一个boost::function)>
支持boost::bind
的函数,你能发布你无法编译的特定代码行吗?不清楚您所说的“我想将这个类实例传递给这个回调函数指针”是什么意思。