Asynchronous Completion Routines I / O,指向类中封装的例程的指针

时间:2010-03-19 02:23:17

标签: c++ windows asynchronous

我想知道是否有使用像ReadFileEx这样的函数需要指向类中函数的指针而不将函数标记为静态?提前致谢。 SBP

2 个答案:

答案 0 :(得分:2)

您始终可以扩展传递的OVERLAPPED结构,以包含指向对象的指针。然后,传递一个调用该对象上的成员函数的函数。有点像这样:

typedef struct _MYOVERLAPPED
{
    OVERLAPPED ol;
    MyObject *obj;
} MYOVERLAPPED, *LPMYOVERLAPPED;

void ReadCompleted(DWORD err, DWORD read, LPMYOVERLAPPED overlap)
{
  overlap->obj->foo();
}

很抱歉,如果上面的代码中有一些轻微的语法错误,那我已经有一段时间了,因为我实际上写了一些C ++ ......

答案 1 :(得分:1)

不,非静态类函数有一个隐含的第一个参数(this),它与它们作为ReadFileEx的回调等的使用不兼容。