传递类成员的函数指针

Passing function pointers of class members

本文关键字:函数 指针 成员      更新时间:2023-10-16
Service::serviceCtlHandler(DWORD OpCode)
{
  //...
}
Service::ServiceStart
{
  //...
  serviceStatusHandle = RegisterServiceCtrlHandler("Service", &Service::serviceCtrlHandler /*incompatible*/); 
  //...
}

如何得到一个兼容的指针?

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

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