我正在尝试在对象中创建一个线程,但是我得到一个错误说'&' : illegal operation on bound member function expression.
读取我看到我必须使成员函数静态,但是当我这样做时,我得到一个错误说{{ 1}}
这就是我想要的:
left of '.dac_ping' must have class/struct/union
答案 0 :(得分:4)
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
}