Mat*_*sen 9 c++ compiler-errors stream
我一直在尝试使用C++,我遇到了一个我不知道如何解决的问题.
基本上,我发现你不能复制流(请参阅为什么不允许复制stringstream?),这也适用于"包装"它们的对象.例如:
这导致错误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)简单地引用它们.具有私有拷贝构造函数的所有其他对象也是如此.
您可以做两件事,都需要注意谁拥有该对象:
存储对流的引用,并确保只要您的这些类存在,该对象就不会超出范围。
复制指针,并确保仅当最后一个类完成指向的流对象时才删除。
两者是等效的,尽管我个人更喜欢参考方法。
| 归档时间: |
|
| 查看次数: |
18848 次 |
| 最近记录: |