Tengo una clase de C++ en la que me gustaría mantener una secuencia utilizada para el registro.Flujo de C++ como variable miembro
La secuencia se debe poder establecer (y posiblemente restablecer) después de la construcción del objeto.
Debe ser posible establecer la secuencia como std::cout
, o como un flujo de archivos para iniciar sesión en un archivo, o como un stringstream que no hace más que ignorar los datos (un /dev/null
de tipo). En cualquier caso, debe ser un objeto de tipo ostream
, que el creador del objeto puede restablecer en cualquier momento. La clase en sí no tiene en cuenta el tipo de flujo concreto.
pude lograr esto con un puntero a un ostream, pero entonces la sintaxis se convierte en un poco molesto, tener que utilizar el operador DEREF:
(*m_log) << "message";
en lugar de
m_log << "message";
pero puedo No use referencias, ya que el objeto de transmisión debe posiblemente restablecerse después de que el objeto se haya inicializado.
¿Existe una forma elegante de lograr esto, es decir, evitar el uso de punteros, pero aún así ser capaz de restablecer después de la construcción?
¿Por qué no proporcionar una pequeña función miembro devolver una referencia a su torrente? algo en el camino de: ostream & mlog() {return * m_log;}. Luego escribiría: mlog() << "mensaje"; – fjardon
Use un puntero y comience su función con 'std :: ostream & o = * m_log;'. –
@fjardon: ¿Por qué no lo proporciona como una respuesta pequeña? ; P – Xeo