Ich habe eine C ++ - Klasse, in der ich einen Stream für die Protokollierung speichern möchte.
Der Stream sollte nach der Konstruktion des Objekts gesetzt (und möglicherweise zurückgesetzt) werden können.
Es sollte möglich sein, den Stream als std::cout
zu setzen, oder als Datenstrom in eine Datei einzuloggen, oder als Stringstream, der nur die Daten ignoriert (ein /dev/null
der Arten). In jedem Fall sollte es ein Objekt vom Typ ostream
sein, das der Ersteller des Objekts jederzeit zurücksetzen kann. Die Klasse selbst ist sich des konkreten Stromtyps nicht bewusst.
Ich könnte dies mit einem Zeiger auf einen Ostream erreichen, aber dann wird die Syntax etwas nervig, da ich den Deref-Operator verwenden muss:
%Vor%statt
%Vor%Aber ich kann keine Referenzen verwenden, da das Stream-Objekt möglicherweise zurückgesetzt werden muss, nachdem das Objekt initialisiert wurde.
Gibt es einen eleganten Weg, dies zu erreichen, d. h. die Verwendung von Zeigern zu vermeiden, aber nach der Konstruktion noch zurückgesetzt zu werden?