C++ 的class中只有用 static 的公有成员函数才有可能作为参数传递给 callback。
但是 static 的成员函数却不能访问非 static 的成员,因为对于static来说this指针是没有意义的。
那么有个变通的解决方法:自己搞一个 ^_^
——用一个该class的指针作参数,通过该参数来变通的访问类的实例。
如下:
#include <iostream>
using namespace std;
typedef int (* FUN)(int,void*);
class AA {
public:
int aa;
static int fun(int n, AA* a) {
return a->aa>>n;
}
};
int f(int f, void*)
{ return f<<2; }
void p (FUN callback, void* arg=NULL)
{
cout<<callback(8, arg)<<endl;
}
int main ()
{
AA a;
a.aa = 0x1000;
p (f);
p ((FUN)AA::fun, (void*)&a);
return 0;
}
对此,pthread_create 最后一个参数的魔力就体现出来了。
//EOF
0 comments:
Post a Comment