C ++ - Stream als Elementvariable

8

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?

    
Madeleine P. Vincent 09.12.2011, 13:47
quelle

2 Antworten

9

Sie können Streams zurücksetzen: Sehen Sie sie live auf Ссылка

%Vor%     
sehe 09.12.2011, 14:26
quelle
4

Warum sich Sorgen machen?

%Vor%

Und verwenden Sie stattdessen log() << "blah\n"; .

    
Xeo 09.12.2011 13:51
quelle

Tags und Links