将状态传递给功能指针
Passing state to function pointer
我在具有此类型的外部库中使用的函数:
int libraryFunction(int* fp(int))
但是,我需要回调也可以通过ostream
,并且库函数没有任何允许函数,lambdas或通过额外参数的过载。有没有办法将ostream
进入回调?
如果库API不支持函数对象或传递自定义状态指针,则您必须将对象的状态(在这里a a ostream
(存储在您的身边。
功能是无国状的,除了在已知的时间位置存储状态或状态指针外,别无选择。
陷阱是您必须确保状态的寿命与库中回调的寿命匹配。ostream
不得早日销毁。
另一个问题是,除非您可以将某种索引传递给您的功能,否则您必须为每个状态声明一个单独的功能。
传递int,并使用它查找回调所需的所有内容。如果仅是一个排气...
#include <iostream>
#include <functional>
#include <fstream>
#include <map>
int main() {
enum {
jkout = 0,
cout = 1
};
std::map<int, std::ostream*> lookup;
std::ofstream jout("junk.txt");
lookup[jkout] = &jout;
lookup[cout] = &std::cout;
*(lookup[jkout]) << "hellon";
return 0;
}
相关文章:
- 如何定义和设置指向模板类方法的功能指针
- 将状态传递给功能指针
- 如何使用结构内的功能指针调用私有函数
- 功能指针不起作用(C )
- 将C 方法作为功能指针传递
- 优化调用一系列功能指针
- C 功能指针和成员功能指针
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用
- 功能指针的静态初始化
- 功能指针参数参数转换为const
- 使用lambda在功能指针铸造时双免费
- 如何在两个类之间使用功能指针
- exc_bad_access on for loop(数组功能指针)
- 如何通过功能指针调用派生方法
- 虚拟功能指针指向派生类中的函数
- C :铸造成员功能指针
- 指向成员功能的功能指针
- 正确施放以指向返回功能的函数的功能指针
- 当用作模板参数时,功能指针是否需要指向具有外部链接的函数
- 在堆中创建功能指针的数组