ネットで調べたのですが、どうしても分からないことがあったのでトピックを立てさせていただきました。
Windows10にてVisual Studio 2017 Communityを用いてC++でプログラミングを行っています。
タイトルの通り、以下のようなクラス内に宣言した関数(Rate())をスレッド化してRate()とCalc()のマルチスレッドを行いたいと考えております。
コード:
class C_Calc
{
unsigned int thID;
HANDLE hTh;
public:
void Calc(void);
static void executeLauncher(void* args);
void Rate(void);
};
それにあたり、「クラス内関数 _beginthreadex」と検索することで上位に出てきた
http://d.hatena.ne.jp/kasei_san/20070612/p1
といったサイトを参考に作ったのですが、
コード:
hTh = (HANDLE)_beginthreadex(NULL, 0, executeLauncher, NULL, 0, &thID);
としたところ、
コード E0167
型 "int (__stdcall *)(void *args)" の引数は型 "_beginthreadex_proc_type" のパラメーターと互換性がありません
と出てきます。
この時、executeLauncherはint __stdcallにしてみたり、voidにしてみたりunsigned intにしてみたりしています。
また、
コード:
hTh = (HANDLE)_beginthreadex(NULL, 0, &executeLauncher, NULL, 0, &thID);
と「&」をつけてみたりもしましたがダメでした。
クラス内関数Rate()をスレッド化するにはどうしたらよいのでしょうか。
ご教授いただけますと幸いです。