小编imt*_*990的帖子

如何在C++中编写ostreams的向量,它接受所有不同的输出流,如cout,ostringstream和ofstream

我正在尝试实现一个记录器,它可以注册多个流,如ostringstream,ofstream等.我试图实现这样的功能

void register_stream(std::ostream& a);
Run Code Online (Sandbox Code Playgroud)

矢量如下

std::vector<std::ostream> streams;
Run Code Online (Sandbox Code Playgroud)

寄存器流和运算符重载如下

void logger::register_stream(std::ostream &a)`

{

    streams.push_back(a);

}

template <typename T>

void logger::operator<<(T const& value)

{

    for (auto stream : streams)

    {

        (stream) << value;

    }

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现一个记录器,以便在单个操作员" <<"调用中写入所有已注册的流.

以下是调用代码:

std::ostringstream os;
    std::ofstream f;
    logger l;
    l.register_stream(f);
    l.register_stream(os);
    l << "log this";
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

C2280 :: std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)尝试引用已删除的函数

任何帮助将非常感激.

c++ vector ostream c++11

4
推荐指数
1
解决办法
320
查看次数

标签 统计

c++ ×1

c++11 ×1

ostream ×1

vector ×1