今回は麻雀ゲームを作成しているのですがちょっと困った壁にぶつかってしまいました
CPの思考は並列処理にしたいと考えているのですがエラーが出てしまいました
プログラムは大雑把にこんな感じです
class CPlayer { protected: DWORD m_thID; HANDLE m_hTh; unsigned __stdcall cpRoutine(void *); public: void tumo(); };スレッドの呼び出しはtumoメソッドでCPの場合
m_hTh = (HANDLE)_beginthreadex( NULL, 0, CPlayer::cpRoutine, NULL, 0, (unsigned *)&m_thID );
といった感じで呼び出そうとしています
エラーの内容は
error C3867: 'CPlayer::cpRoutine': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&CPlayer::cpRoutine' を使用してください
といったものです
そこでエラーのメッセージ通り&CPlayer::cpRoutineに変更すると
error C2664: '_beginthreadex' : 3 番目の引数を 'unsigned int (__stdcall CPlayer::* )(void *)' から 'unsigned int (__stdcall *)(void *)' に変換できません。(新しい機能 ; ヘルプを参照)
といったエラーメッセージが出てきます
そもそもクラスメソッドを並列処理することはできないのでしょうか
せっかくの休みですがどなたか回答お願いします
書き忘れていましたが環境はVisual C++ 2008 Express Editionです