首页 > 解决方案 > 我可以存储一组 iostream 而不在堆上手动分配它们吗?

问题描述

在 C++ 中,std::basic_iostream的复制和移动赋值运算符受到保护(出于我不太了解的原因)。这似乎让我没有太多管理iostream对象集合的方法,没有在堆上手动分配它们、存储指针列表以及编写清理它们的析构函数。

我是否错过了一些技巧,可以让我将它们分配在 a 中std::vector

当然,我想我可以继承受保护的运营商并将其提升为公众,但这似乎是一团糟。

奖励问题:为什么这些方法首先受到保护?

标签: c++

解决方案


我可以在堆以外的任何地方存储 iostream 的集合吗?

唯一不动态分配的标准容器是std::array. 您可以将iostream' 存储在数组中:

std::stringbuf sb;
std::array streams{
    std::iostream(&sb),
    std::iostream(&sb),
};

推荐阅读