C复制流对象

我一直在试验C,我遇到了一个我不知道如何解决的问题.

基本上,我发现你不能复制流(见Why copying stringstream is not allowed?),这也适用于“包裹”它们的对象.例如:

>我创建了一个类型为stringstream的数据成员的类.
>我创建了这个类的对象.
>我尝试复制对象,例如“TestObj t1; TestObj t2; t1 = t2;”

这导致错误C2249:

‘std::basic_ios<_Elem,_Traits>::operator =’ : no accessible path to private member declared in virtual base ‘std::basic_ios<_Elem,_Traits>’

所以我的问题是:我怎样(最好是容易)复制具有* stream类型数据成员的对象?

完整示例代码:

#include <iostream>
#include <string>
#include <sstream>

class TestStream
{
public:
    std::stringstream str;
};

int main()
{
    TestStream test;
    TestStream test2;
    test = test2;

    system("pause");
    return 0;
}

提前致谢.

UPDATE

感谢下面的答案,我设法解决了这个问题.我所做的是声明流对象一次,然后使用包装器对象中的指针(例如,TestStream)简单地引用它们.具有私有拷贝构造函数的所有其他对象也是如此.

你不被允许复制流的原因是it doesn’t make sense to copy a stream.如果你解释你想要做什么,肯定有办法做到这一点.如果您想要一块可以复制的数据,请使用字符串.但是流更像是连接而不是字符串.
https://stackoverflow.com/questions/7903903/c-copy-a-stream-object

转载注明原文:C复制流对象