C/C++の宿題を片付けます 94代目
■ このスレッドは過去ログ倉庫に格納されています
0887デフォルトの名無しさん
2007/08/18(土) 13:23:27クラスの中の関数からスレッドを生成する時にスレッド処理の関数として、
下記のようにそのオブジェクトの内部関数を指定することはできますでしょうか?
class CHogehoge{
private:
HANDLE m_Handle;
int Thread_Create();
DWORD WINAPI Thread_Main(void* in_Param);
}
int CHogehoge::Thread_Create(){
m_Handle = CreateThread(NULL, 0, Thread_Main, (void*)NULL, 0, NULL);
return 0;
}
DWORD WINAPI CHogehoge::Thread_Main(void* in_Param){
〜やりたい処理を書く〜
ExitThread(TRUE);
}
このように記述してコンパイルするとCreateThreadの引数(Thread_Main)でエラーとなってしまいます。
*** error C3867: 'CHogehoge::Thread_Main': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&CHogehoge::Thread_Main' を使用してください
これで 「m_Handle = CreateThread(NULL, 0, &CHogehoge::Thread_Main, (void*)NULL, 0, NULL);」 に修正すると今度は
*** error C2664: 'CreateThread' : 3 番目の引数を 'DWORD (__stdcall CHogehoge::* )(void *)' から 'LPTHREAD_START_ROUTINE' に変換できません。
となってしまいます。(開発環境はMicrosoft Visual C++ 2005)
■ このスレッドは過去ログ倉庫に格納されています