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