He estado buscando en Google y simplemente no puedo encontrar una respuesta simple para esto. Y debería ser simple, como generalmente lo es STL.Cómo heredar de std :: ostream?
Quiero definir MyOStream que hereda públicamente de std :: ostream. Digamos que quiero llamar a foo() cada vez que se escribe algo en mi transmisión.
class MyOStream : public ostream {
public:
...
private:
void foo() { ... }
}
Entiendo que la interfaz pública de ostream no es virtual, entonces, ¿cómo se puede hacer? Quiero que los clientes puedan usar el operador < < y write() y put() en MyOStream y que utilicen la capacidad extendida de mi clase.
El STL puede ser simple, pero eso es solo una parte de la biblioteca estándar de C++. La biblioteca iostreams no tiene nada que ver con (lo que fue) el STL. STL es básicamente contianers + iterators + algorithms. Iostreams, configuraciones regionales y todo eso tiene un origen completamente diferente, y en general es un dolor trabajar con él;) – jalf