Raimund Hölle schrieb:
Hallo Bastian,
Bastian Schern schrieb am 10.10.2003 17:42:
Raimund Hölle schrieb:
Hallo Bastian,
Bastian Schern schrieb am 09.10.2003 13:03:
ich habe mir eine eigene Klasse geschrieben, die ich für Ausgaben auf den Bildschirm oder/und in ein File verwende.
--- snip --- DebugLog& DebugLog::operator<<( ostream& (*out)(ostream&) )
[...]
Es werden auch "endl", usw. unterstützt. Wie bekomme ich es hin, dass jetzt auch noch Manipulatoren unterstützt werden?
Ich würde nämlich gerne folgendes machen:
DebugLog debug; debug << setfill(' ') << setw(3) << i << endl;
[...]
P.S. - ich habe den Code aus dem Gedächtnis hingeschrieben, also sind sicherlich auch noch Syntaxfehler enthalten, aber ich denke, daß die Beispiele prinzipiell funktionieren sollten.
Ja, das ist das Problem ... siehe unten.
Ich habe das ganze mal wie unten gemacht, es gibt aber ein Paar Fehler, die ich nicht lösen kann. Ich habe die Fehlermeldungen des Compilers hinter oder unter die Codezeile geschrieben.
class DebugLog { /* * warning: * `class DebugLog' has virtual functions but non-virtual destructor */
==> entweder: - Destruktor virtuell machen: virtual ~DebugLog(); - oder SetFill() nicht virtuell: DebugLog& SetFill( char chAPad );
public: DebugLog(); ~DebugLog();
[...]
virtual DebugLog& SetFill( char chAPad );
[...]
inline ios& DebugLogManipSetFill( DebugLog& oALog, char chAPad )
Ist natürlich Unfug, muß heißen: inline DebugLog& DebugLogManipSetFill( DebugLog& oALog, char chAPad )
[...]
Ich habe das jetzt so geändert und es treten jetzt erst an der Stelle
Fehler auf, wo "setfill('x')" benutzt wird auf.
debug << setfill('a') << endl;
// error: no match for `DebugLog& << DebugLogManip<char>' operator
/*
DebugLog.h|40| error: candidates are: DebugLog&
|| DebugLog::operator<<(std::ostream&(*)(std::ostream&))
DebugLog.h|41| error: DebugLog&
|| DebugLog::operator<<(std::basic_string