成员函数指针问题

时间:2011-09-20 15:33:01

标签: c++

使用:

static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);

int main() {
   SERVICE_TABLE_ENTRY DispatchTable[] = {
      {"MyService", ServiceStart},
      {NULL, NULL}
   };
}

不起作用:

  

错误C2440:'初始化':无法从'void(__stdcall Service :: *)(DWORD,LPTSTR *)'转换为'LPSERVICE_MAIN_FUNCTIONA'

class Service {
   static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);
};

int main() {
   SERVICE_TABLE_ENTRY DispatchTable[] = {
      {"MyService", Service::ServiceStart},
      {NULL, NULL}
   };
}

2 个答案:

答案 0 :(得分:4)

您必须在该上下文中使用&才能获得正确的指针。

答案 1 :(得分:3)

使用&Service::ServiceStart,而不是Service::ServiceStart

一条建议:既然你把它作为static类的Service函数,那么也要重命名它。 ServiceStart不必要地长。我想这里隐含着Service。如果是这样,那么只需Start

class Service
{
  static void WINAPI Start(DWORD argc, LPTSTR *argv);
};

然后使用&Service::Start