He estado experimentando con C++, y he encontrado un problema que no sé cómo resolver.C++ copie un objeto de secuencia
Básicamente, descubrí que no puede copiar flujos (consulte Why copying stringstream is not allowed?), y eso también se aplica a los objetos que los 'envuelven'. Por ejemplo:
- Creo una clase con un miembro de datos del tipo stringstream.
- Creo un objeto de esta clase.
- Intento copiar el objeto, por ejemplo, "TestObj t1; TestObj t2; t1 = t2;"
Esto hace que el C2249 de error:
'std :: basic_ios < _Elem, _Traits> :: = operador': hay un camino accesible a los miembros privados declarada en base virtual 'std :: basic_ios < _Elem, _Traits>'
Así que mi pregunta es: ¿cómo puedo (preferiblemente fácilmente) copiar objetos que tienen los miembros de datos de este tipo * stream?
completo código de ejemplo:
#include <iostream>
#include <string>
#include <sstream>
class TestStream
{
public:
std::stringstream str;
};
int main()
{
TestStream test;
TestStream test2;
test = test2;
system("pause");
return 0;
}
Gracias de antemano.
ACTUALIZACIÓN
he logrado solucionar este problema gracias las respuestas a continuación. Lo que he hecho es declarar los objetos de transmisión una vez y luego simplemente hacer referencia a ellos utilizando punteros en los objetos de envoltura (por ejemplo, TestStream). Lo mismo ocurre con todos los demás objetos que tienen constructores de copia privada.
Ya que parece has hecho tu tarea, la pregunta vinculada. ¿Por qué necesita este comportamiento? ¿leyendo escribiendo? –