正如标题所示。 以下是我的代码框架。在C++中运行类成员函数的线程
class CLASS
{
public:
void A();
private:
DWORD WINAPI B(LPVOID);
};
void CLASS::A()
{
DWORD (WINAPI CLASS::*thread)(LPVOID) = &CLASS::B;
...
CreateThread(NULL, 0, thread, &arg, 0, NULL);
...
}
函数B需要CLASS的成员变量。
但我编译这个时有错误代码。
这是“无法将参数3从'DWORD(__stdcall CLASS :: *)(LPVOID)'转换为'LPTHREAD_START_ROUTINE'”或类似的东西。
我不知道它在英语环境中是否一样。
有人可以帮忙吗?
和运算开始前得到任何聪明的想法 - 非静态类成员函数指针是*怪异*。不仅调用约定与简单的`func(classname * this,...)`不同,_pointer representation_很奇怪 - 在某些情况下,类成员函数指针最终可能是普通函数指针的2倍,所以甚至不考虑迫使演员:) – bdonlan 2011-01-12 08:40:05