从类成员函数到类 C 函数指针的转换
Conversion from class member function to C-like function pointer
我正在为出HTTP请求编写一个围绕cURL库的C++包装器。
我想使用专用的类成员函数进行 cURL 回调(cURL 要求客户端提供读写回调函数来读取和写入上传/下载的内容(。由于 cURL lib 是用 C 语言编写的,因此这些回调必须以 C 函数的形式提供,并具有以下签名:
size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
其中userdata
是指向用户使用专用 API 保存的数据的指针。
在预先存在的软件中,使用了C++静态函数作为cURL回调,用户数据等于实际处理读/写的对象的this
指针。
如前所述,我想使用std::bind
或std::mem_fn
之类的东西直接将给定类的成员函数传递给 cURL,但这些模板的结果不能按照我的情况分配给 C 函数指针。这个问题有优雅的解决方案吗?
我想使用 std::
bind 或 std::mem_fn 之类的东西直接将给定类的成员函数传递给 cURL,但这些模板的结果不能按照我的情况分配给 C 函数指针。这个问题有优雅的解决方案吗?
使用静态函数(或自由函数(的现有解决方案是唯一的选择。
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- C++函数转换为 C# 函数
- 将 C 函数转换为 C++ 以检查数字是否有效
- C++:从重载函数转换为 std::function
- 将 C 函数转换为C++语言
- C++隐式构造函数转换,后跟类型向上转换
- 将 lambda 函数转换为具有混合 lambda 引入器和参数列表的函子结构
- 通过 Boost Python 将 Python 函数转换为 C++,用作回调
- 如何将 MATLAB 图像处理库内置函数转换为 MATLAB 编码器代码生成不支持的 C++?
- 如何将函数转换为 lambda 函数
- 自定义函数转换错误?
- 将 C# 哈希函数转换为C++
- 将 lambda 函数转换为另一个编译单元中的普通函数会缩短编译时间吗?
- 加快 R 性能或将 R 函数转换为C++函数
- 将成员函数转换为指向成员函数的指针
- 将MATLAB炒作函数转换为C
- Rcpp - 用二进制函数转换数字向量?
- C lambda函数转换误差
- 此语法中的构造函数转换错误
- 将函数转换为find_if lambda