我已经声明了一个函数并作为 CreateThread() 函数的 3 个参数传递,但我试图将这个函数和相关的类分开,以使代码更有条理,但我收到以下错误:
error: cannot convert 'long unsigned int (MainWindow::)(void)' to 'LPTHREAD_START_ROUTINE {aka long unsigned int (attribute((stdcall)) )(void)}' for argument '3' to 'void* CreateThread(LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD)'
^
我猜这是因为方法的每个第一个参数都是由编译器自动生成的隐藏参数,这是 this
指针被传递的地方,导致函数签名不匹配,对吧?
我有什么办法可以让它工作吗?
它确实发生在方法内部的调用中:
hThread = CreateThread( NULL, 0, &func, NULL, 0, NULL);
最佳答案
创建一个接受 void* 的函数。使用它作为参数并将其转换回函数
关于c++ - 我可以将方法转换为 LPTHREAD_START_ROUTINE 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672485/