class Blah
{
static unsigned int __stdcall Start(void*); // void* should be here, because _beginthreadex requires it.
};
Подпрограмма, переданная в _beginthreadex
, должна использовать __stdcall
соглашение о вызовах, а должна возвращать код завершения потока .
Реализация Blah :: Start:
unsigned int __stdcall Blah::Start(void*)
{
// ... some code
return 0; // some exit code. 0 will be OK.
}
Позже в своем коде вы можете написать следующее:
hThread = (HANDLE)_beginthreadex(NULL, 0, CBlah::Start, NULL, NULL, NULL);
// or
hThread = (HANDLE)_beginthreadex(NULL, 0, &CBlah::Start, NULL, NULL, NULL);
В первом случае Function-to-pointer conversion
будет применяться в соответствии со стандартом C ++ 4.3 / 1. Во втором случае вы передадите указатель на функцию неявно.