传递类成员的函数指针

时间:2011-09-19 17:19:50

标签: c++

Service::serviceCtlHandler(DWORD OpCode)
{
  //...
}

Service::ServiceStart
{
  //...
  serviceStatusHandle = RegisterServiceCtrlHandler("Service", &Service::serviceCtrlHandler /*incompatible*/); 
  //...
}

如何获得兼容指针?

1 个答案:

答案 0 :(得分:2)

您需要制作serviceCtlHandler函数static,这意味着它将无法访问任何对象成员。这是因为RegisterServiceCtrlHandler期望一个函数指针没有绑定到一个对象,并且不会收到隐含的this指针。

如果改为使用RegisterServiceCtrlHandlerEx,则可以在指向对象后传递指针,并在正确转换指针后让静态函数调用另一个成员函数。