【发布时间】:2011-01-01 09:03:08
【问题描述】:
我正在为我正在使用的 C 库设置一个成员函数作为回调。 C 库像这样设置回调:
typedef int (*functionPointer_t)(myType1_t*, myType2_t*, myType3_t*);
setCallback(param1, param2, functionPointer, param4)
我想使用 boost::bind (如果可能的话) 来传递函数指针。我希望指向的函数是实例化类的成员,而不是静态成员。例如
Class A {
public:
A();
protected:
int myCallback(myType1_t*, myType2_t*, myType3_t*); //aka functionPointer_t
}
这可以使用 boost::bind 和 boost::function 完成吗?根据How can I pass a class member function as a callback?(第三个答案),我似乎可以声明以下内容(在某处,或作为 typedef):
boost::function<int (A*, myType1_t*, myType2_t*, myType3*> myCallbackFunction
然后在 A(ctor)的某处调用该类型的 boost::bind,并将其传递给 C 库调用。
这是可能的,还是我不在基地?非常感谢。
【问题讨论】:
标签: c++ boost boost-bind boost-function