各位来看看,error C2664的有关问题

各位大虾来看看,error C2664的问题
我想用C++实现重叠I/O模型(完成例程)的一个类,
  在类中定义了成员函数,void   CALLBACK   WorkerRoutine(DWORD   ,DWORD   ,LPWSAOVERLAPPED   ,DWORD   );也即是完成例程的函数,
        在这个类的另外一个成员函数中,使用了WSARecv(AcceptSocket,&DataBuf,1,&RecvBytes,&Flags,&OverLapped,&DataCollectionClass::WorkerRoutine)函数,完成例程函数用&DataCollectionClass::WorkerRoutine引用,发生如下错误:
error   C2664:   'WSARecv '   :   cannot   convert   parameter   7   from   'void   (__stdcall   DataCollectionClass::*   )(DWORD,DWORD,LPWSAOVERLAPPED,DWORD) '   to   'LPWSAOVERLAPPED_COMPLETION_ROUTINE '
1>                 There   is   no   context   in   which   this   conversion   is   possible

这是什么原因呢??!?!?!?

------解决方案--------------------
如果我没猜错,你那个函数只是一个普通类成员吧?
回调函数要全局或者静态函数。

如果不是这个原因,那你就仔细看看你函数的哪个参数搞错了没有
------解决方案--------------------
WorkerRoutine静态函数
------解决方案--------------------
你的头文件是这样吧:
class DataCollectionClass
{
public:
static void __stdcall WorkerRoutine(unsigned long,unsigned long,struct _OVERLAPPED *,unsigned long);
}

那cpp里边应该是酱紫:
void __stdcall DataCollectionClass::WorkerRoutine(unsigned long,unsigned long,struct _OVERLAPPED *,unsigned long)
{
}

你看看是否有什么不对的。
这个错误的意思是你申明了这个函数但是没实现它

------解决方案--------------------
用全局函数或类的静态方法。