how to pass a non static-member function as a callback?(如何将非静态成员函数作为回调传递?)
问题描述
io_iterator_t enumerator;
kern_return_t result;
result = IOServiceAddMatchingNotification(
mNotifyPort,
kIOMatchedNotification,
IOServiceMatching( "IOFireWireLocalNode" ),
serviceMatchingCallback,
(void *)0x1234,
& enumerator );
serviceMatchingCallback((void *)0x1234, enumerator);
如果我将 serviceMatchinCallback 声明为静态,那么它可以工作,但我不希望它是静态的.有没有办法给它传递一个非静态回调函数?
if i declare serviceMatchinCallback as static then it works, but i do not want it to be static. Is there a way to pass it a non-static callback function?
谢谢
推荐答案
你可以让它保持静态,但是除了你想要的任何其他用户数据之外,你还可以使用 userdata 来存储 this
指针(通过打包例如,将它们放入一个结构中),然后通过调用 this->someCallback
(其中 this
是存储在用户数据,当然).
You could keep it static, but use the userdata to store the this
pointer in addition to whatever other userdata you want (by packing them into a structure, for example) and then call an object-specific callback from the static version by calling this->someCallback
(where this
is the pointer stored in the userdata, of course).
这篇关于如何将非静态成员函数作为回调传递?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将非静态成员函数作为回调传递?
基础教程推荐
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01