Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用boost::bind将类/结构实例作为参数传递给回调?_C++_Boost Bind - Fatal编程技术网

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

的函数,你能发布你无法编译的特定代码行吗?不清楚您所说的“我想将这个类实例传递给这个回调函数指针”是什么意思。