如何解决我可以做两个std :: ostream-s的std :: pair吗?
我想制作一个包含两个std::ostream
对象的对。我需要这样做,以便可以将单个对象传递给各种功能,而不是两个std::ostream
对象。我希望我能做this:
#include <iostream>
#include <ostream>
using namespace std;
int main(){
std::ostream output( std::cout.rdbuf());
std::ostream error(std::cout.rdbuf());
using Logger = std::pair< std::ostream,std::ostream >;
Logger logger = std::make_pair( output,error );
return 0;
}
但是我收到一个编译器错误,即pair<std::basic_ostream<char>,std::basic_ostream<char> >
没有匹配的构造函数
解决方法
您遇到的问题是无法复制ostream
。
解决方案是使用一对引用:
using Logger = std::pair<std::ostream &,std::ostream &>;
Logger logger { output,error };
,
代替复制(流不支持复制),您可以对它们进行一对引用
auto logger{::std::tie(output,error)};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。