C ++ скопировать объект потока
Я экспериментировал с C ++ и столкнулся с проблемой, которую не знаю, как решить.
По сути, я обнаружил, что вы не можете копировать потоки (см.Почему копирование потока строк не допускается?), и это также относится к объектам, которые их «обертывают». Например:
Я создаю класс с членом данных типа 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;
}
Заранее спасибо.
ОБНОВИТЬ
Мне удалось решить эту проблему благодаря ответам ниже. Что я сделал, так это объявил объекты потока один раз, а затем просто ссылался на них, используя указатели в объектах-обертках (например, TestStream). То же самое касается всех других объектов, которые имеют частные конструкторы копирования.