c++ - 传递类成员的函数指针

标签 c++

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

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

如何获得兼容指针?

最佳答案

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

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

关于c++ - 传递类成员的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474765/

相关文章:

c++ - 初学者使用对象和类时出现以下错误

c++ - 当算法需要零秒/毫秒时间时,如何获得近似时间?

c++ - Assimp 不加载网格和动画的名称

c++ - 如何在 OpenCV 中读取 XML 字符串?

c++ - C++ 中的 double 类型变量乘法导致值不准确

c++ - Qt 插槽是否与其他代码并行运行?

c++ - "detects_simple_anagram": memory access violation at address 0x00000000: no mapping at fault address 中的 fatal error

c++:将其所有参数连接为字符串的函数

c++ - 如何在 C++ 中返回一个列表

c++ - C++编译器问题: 3>cl : Command line error D8016: '/clr' and '/arch:SSE2' command-line options are incompatible