static
функции не привязаны к конкретному экземпляру; указатель this
отсутствует, а у вас нет «переменных-членов». Вы можете передать указатель this
в качестве аргумента своей функции, а затем преобразовать его в Dac*
и получить к нему доступ к переменным члена.
Так что вы могли бы сделать
ping_thread = CreateThread (NULL , 0, ping_loop, (LPVOID)this, 0, &dping_thread);
И измените ping_loop
на это:
static DWORD WINAPI ping_loop(void* param)
{
Dac* dac = (Dac*)param;
while ( dac->com.dac_ping() == 0)
Sleep(900);
return 1; //since this is an infinite loop, if the loop breaks, it has failed
}