相关疑难解决方法(0)

为什么不允许复制stringstream?

int main()
{
   std::stringstream s1("This is my string.");
   std::stringstream s2 = s1; // error, copying not allowed
}
Run Code Online (Sandbox Code Playgroud)

我找不到为什么我不能复制stringstream的原因.你能提供一些参考吗?

c++ stringstream

54
推荐指数
2
解决办法
1万
查看次数

C++复制流对象

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

基本上,我发现你不能复制流(请参阅为什么不允许复制stringstream?),这也适用于"包装"它们的对象.例如:

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

这导致错误C2249:

'std :: basic_ios <_Elem,_Traits> :: operator =':虚拟基础'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;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

UPDATE

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

c++ compiler-errors stream

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

compiler-errors ×1

stream ×1

stringstream ×1