C++ 中的 C 库回调,不带指向"this"的指针
C Library Callback in C++ without pointer to "this"
我在这里有一个C库,我想在C 类中包装。该库的工作不同步,需要设置错误处理程序。我知道如何将错误处理程序包裹在C库的静态类函数中,但是我习惯于使用void *user_data
指针之类的东西,我可以将this
放入静态thunk中调用成员函数。
有没有办法直接注册成员函数的回调,因为此库不具有指向某些UserData的指针?
您可以将其包装在自己的静态函数中,该功能知道某些要操作的全局(或静态局部)对象。您甚至可以将此功能作为静态方法,但如果需要,您就无法在不提供被称为对象的对象上调用一个方法。
编辑:考虑了一段时间后,也许有办法。您可以从本质上模拟线程 - 本地存储,并拥有由线程ID索引的整体集合的全局汇集。在每个线程结合的状态集合中,您可以保留呼叫对象的堆栈/队列(取决于如何处理数据)。回调可以查找存储的队列(因为回调知道其运行的线程ID)。这将使您强制一个单线读取框架在多个数据流上操作。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 关于C++中具有多重继承"this"指针的说明
- Doees the 'this' 指针参与虚函数的多态行为
- 为什么成员函数内的"this"指针为空?
- "this"指针的值在对象的生存期内是否恒定?
- 如何将'this'指针传递给C++ WinAPI 线程?
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- 'this'指针是否可以在 c++ 标头声明中使用?
- 为什么在通过引用返回运算符分配时取消引用'this'指针?
- 在类方法中使用 "this" 指针是否是一种好的做法?
- 为什么直接传递"this"指针来存档是一个错误,而另一个相同类型的指针是可以的?
- C++虚拟方法,不需要"this"指针 - 优化
- 指向成员函数签名的指针中缺少"this"指针
- 是否可以获取'this'指针的地址?
- 静态类成员不是与 this 指针没有关联吗?
- 为什么有必要将"this"指针作为"arg"参数传递给pthread_create
- 编译错误:2 个重载没有'this'指针的合法转换。使用结构
- 对象的"this"指针是否等于指向其(单个)基类的指针?
- Do=在lambda的捕获列表中捕获this指针
- 将"this"指针传递给析构函数中的其他类/函数