Una cosa del genere? (codice sotto)
Nota che non puoi copiare gli stream in maniera semplice (da quel che so), percui sto passando un pointer, e questo significa che prima di usare la classe devi essere sicuro che l' ofstream originale non sia stato distrutto (andato out of scope ad esempio) altrimenti sei nei guai.
Una soluzione forse piu sicura è quella di passare una string con il nome del file output da aprire al constructor, ed inizializzare l'ofstream dentro il constructor così che l'oggetto si occupa di gestire l'ofstream e non deve rischiare passando attraverso un pointer.
Imposti la flag ofstream::app così tutti i tuoi oggetti "appendono" le robe alla fine del file, però assicurati che aprano e chiudano lo stream correttamente ed in ordine, penso dia problemi se hai 2 stream aperti sullo stesso file, ma sinceramente non ne ho idea.
C++:
#include <string>
#include <fstream>
using namespace std;
class MyClass {
public:
//constructor
MyClass(ofstream* stream, string s);
//getter
ofstream* output()const { return stream_; }
private:
ofstream* stream_;
};
//constructor definition outside class
MyClass::MyClass(ofstream* stream, string s)
:stream_{ stream }
{
*stream_ << s << endl;
}
int main()
{
ofstream output("output.txt", ofstream::out);
string data = "data manager created";
MyClass dataManager(&output, data);
}