我正在尝试实现一个记录器,它可以注册多个流,如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>> &)尝试引用已删除的函数
任何帮助将非常感激.