c++ - 将状态传递给函数指针
问题描述
我正在使用具有这种类型的外部库中的函数:
int libraryFunction(int* fp(int))
但是,我还需要将回调传递一个ostream
,并且库函数没有任何允许仿函数、lambda 或传递额外参数的重载。有没有办法ostream
进入回调?
解决方案
传递 int,并使用它来查找回调所需的所有内容。如果它只是一个ostream...
#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]) << "hello\n";
return 0;
}
推荐阅读
- javascript - 为什么 DOMContentLoaded 处理程序可以阻止第一次绘制?
- aggregate - Presto / AWS Athena:在 SELECT 中创建不同类型的数组
- python - 重新排列和聚合 numpy 矩阵中的列
- html - 我编辑了用户表列,所以 Stripe/Cashier 不起作用!有任何想法吗?
- python-3.x - Why is the output of my dictionary in a random, shuffled order as opposed to the order that I want (Python 3.8.3)?
- php - How to select row from Database by ID only once
- python - Using __init__ in OOP
- ios - 在 PageTabViewStyle (SwiftUI 2.0) 或 PageViewController/PageView (带有 UIKit 界面) 上显示部分上一个和下一个项目
- javascript - 捕获 JavaScript 迭代器的返回值
- html - 我需要使用 json 文件中的代码作为 html 文件中 img 的 src