c++ - 异步完成例程 I/O,指向封装在类中的例程的指针

标签 c++ windows asynchronous

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

最佳答案

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

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

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

抱歉,如果上面的代码中有一些轻微的语法错误,自从我实际编写一些 C++ 以来已经有一段时间了......

关于c++ - 异步完成例程 I/O,指向封装在类中的例程的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474608/

相关文章:

c++ - 如何正确设计工作线程? (例如避免 sleep (1))

windows - 当提供的缓冲区太小时返回哪个 HRESULT?

javascript - 依赖顺序的异步 Javascript 文件

javascript - Hapijs 、 fs.readfile 、 fs.writefile 和 childprocess.exec 如何控制异步?

asynchronous - 等待取消异步工作流

c++ - 模板别名范围

c++ - 如果什么都不做,请检查 Makefile

c++ - 在 C++ 中有效地传递和返回对象

c# - 为什么在 VS 2015 中创建的默认 Windows 8 通用应用程序具有深色背景

c++ - 正确检测UNC卷是否在线