Как мне написать конструктор копирования для моего класса, который имеет член std :: stringstream? - PullRequest
5 голосов
/ 30 марта 2011

Если у меня есть такой класс, как мне написать конструктор копирования?

#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 ]

6 голосов
/ 30 марта 2011

Вы можете попробовать это:

MyClass(const MyClass& other): strm(other.strm.str()) {}
4 голосов
/ 30 марта 2011

Если ваш компилятор не поддерживает 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() );
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...