类的成员函数与线程函数

来源:互联网 发布:ev3相扑机器人编程 编辑:程序博客网 时间:2024/05/23 11:44

 类的非静态成员函数之所以不能做线程函数,是因为线程函数需要被声明成WINAPI(即_stdcall)的,而类的非静态成员函数都是_thiscall的,不管编译器的内部实现如何,至少在逻辑上,后者比前者多一个隐式参数:this指针,因此这两种函数的指针不可以进行相互转换的。
 
静态函数是可以的,但在调用类成员函数时,类必须已经实例化。另外,你也可以把线程函数说明为类的友元函数(如果需要调用私有成员的话),再给线程函数传递类指针。就可以调用类成员函数了。