如何为具有std :: stringstream成员的类编写复制构造函数?

时间:2011-03-30 11:17:13

标签: c++ stl

如果我有这样的类,我该如何编写复制构造函数?

#include <stringstream>

class MyClass {
  std::stringstream strm;
public:
  MyClass(const MyClass& other){
    //...
  }
  std::string toString() const { return strm.str(); }
};

std :: stringstream本身没有复制构造函数,所以我不能使用这样的初始化列表:

MyClass(const MyClass& other): strm(other.strm) {}

2 个答案:

答案 0 :(得分:6)

你可以试试这个:

MyClass(const MyClass& other): strm(other.strm.str()) {}

答案 1 :(得分:4)

如果您的编译器不支持C ++ 0x,或者不想使用移动构造函数

MyClass(const MyClass& other)
: strm(other.strm.str())
{
  this->strm.seekg( other.strm.tellg() );
  this->strm.seekp( other.strm.tellp() );
  this->strm.setstate( other.strm.rdstate() );
};