C ++ копирует объект потока

Я экспериментировал с C ++ и столкнулся с проблемой, которую я не делаю. не знаю, как решить.

По сути, я обнаружил, что вы не можете копировать потоки (см. Почему копирование строкового потока не разрешено? ), и это также применимо к объектам, которые их «обертывают». Например:

  • Я создаю класс с элементом данных типа stringstream.
  • Я создаю объект этого класса.
  • Я пытаюсь скопировать объект, например «TestObj t1; TestObj t2; t1 = t2;»

Это вызывает ошибку C2249:

'std :: basic_ios <_elem _traits> :: operator =' : нет доступного пути к закрытому члену, объявленному в виртуальной базе 'std :: basic_ios <_elem _traits>'

Итак, мой вопрос: как я могу (предпочтительно легко ) копировать объекты, которые имеют элементы данных type * stream?

Полный пример кода:

#include 
#include 
#include 

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

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

    system("pause");
    return 0;
}

Заранее спасибо.

ОБНОВЛЕНИЕ

Мне удалось решить эту проблему благодаря ответам ниже. Что я сделал, так это один раз объявил объекты потока, а затем просто сослался на них, используя указатели в объектах-оболочках (например, TestStream). То же самое и со всеми другими объектами, у которых есть частные конструкторы копирования.

9
задан Community 23 May 2017 в 02:09
поделиться