如何创建流对象的集合

Som*_*ude 4 c++ iostream

大多数人都知道,不可能有一个标准的参考文献集.也无法复制流对象.

但是,如果我想制作std::vector流对象或流对象引用的集合(比如说),该怎么办?

我知道我可以在例如结构中包装流对象引用,但是你要么需要实现完整的接口(如果你想直接使用包装器作为流,我更喜欢),或者使用公共getter函数和到处使用它来获得实际的流.

有更简单的方法吗?C++ 11解决方案没问题.

Jos*_*eld 7

你不能有一个容器的引用,但你可以有一个容器std::reference_wrapper.也许你想要的东西:

std::vector<std::reference_wrapper<stream_type>> v;
Run Code Online (Sandbox Code Playgroud)

您可以将其视为std::reference_wrapper非常类似于引用(实际上,它可以隐式转换为引用类型),但它具有作为对象类型的额外优势.