static pthread_create ??问题
class ShortDataLink{
public:
//select 网络I/O
void* threadFun(void* para);
void fun();
};
void ShortDataLink::fun()
{
......
pthread_t tid;
iResult = pthread_create(&tid, NULL, ShortDataLink::threadFun, this);
}
大神帮我看看这个问题。必须把threadFun定义为static的才会编译通过,貌似是pthread_create 是C 语言的函数,好像调用约定不一样,而threadFun是类非静态成员函数, 是 __thiscall.必须定义为static才能作为参数传给pthread_create。但是我如果定义为static就破外了设计,有没有其他的解决方法
。 类的成员函数 除了static的 天生带个this参数 要拿函数指针做别的参数。。。参数不对啊 想不出啥方法可以让非static成员函数当别的参数 mark
[解决办法]
不是调用约定,而是类中非static函数有个默认的this参数。
看你:
iResult = pthread_create(&tid, NULL, ShortDataLink::threadFun, this);
已经传了this,所以这里定义成static没有问题。
如果其他地方还用ShortDataLink::threadFun,需要this.你可以定义两个函数。
[解决办法]