C ++从静态函数窗口调用非静态变量CreateThread示例

时间:2016-08-27 02:51:31

标签: c++ static

我正在使用Windows'CreateThread函数从静态函数调用它。 我想传递给我的工作线程函数指针,它是一个非静态成员。可以吗?

部首:
public:
WinService();
virtual ~WinService();
private:
static DWORD WINAPI ServiceWorkerThread(LPVOID lpParam);
static VOID WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
IHttpServer* p_IHttpServer;      
实现:
WinService::WinService()
{

    p_IHttpServer = new WinHttpServer();
    SERVICE_TABLE_ENTRY [] =
    {
        { SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
        { NULL, NULL }
    };

   StartServiceCtrlDispatcher(ServiceTable 
}
VOID WINAPI WinService::ServiceMain(DWORD argc, LPTSTR *argv)
{
HANDLE hThread = CreateThread(NULL, 0, ServiceWorkerThread,  WinService::p_IHttpServer, 0, NULL); //THIS IS ERROR !!!!!
}

DWORD WINAPI WinService::ServiceWorkerThread(LPVOID lpParam)
{

    IHttpServer* httpServer = (IHttpServer*)lpParam;


    return ERROR_SUCCESS;
}

我在CreateThread收到错误,有没有办法在那里使用非静态p_IHttpServer

0 个答案:

没有答案