正如標題所示。 以下是我的代碼框架。在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