首页 > 解决方案 > 将状态传递给函数指针

问题描述

我正在使用具有这种类型的外部库中的函数:

int libraryFunction(int* fp(int))

但是,我还需要将回调传递一个ostream,并且库函数没有任何允许仿函数、lambda 或传递额外参数的重载。有没有办法ostream进入回调?

标签: c++

解决方案


传递 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;
}

推荐阅读