Hallo, ich habe eine Klassenmethode, die je nach gesetzten Falgs die Ausgabe auf den Bildschirm und/oder in ein File macht: int DebugLog::out( string text ) { // output to console if( log_to_console == true ) { cout << text; } // output to log file if( log_to_file == true ) { file << text; } return 0; } Wie bekomme ich es hin, dass es nicht nur für "string" funktioniert, sondern für alle Typen die "cout" unterstützt? Viele Grüße Bastian
Hallo Bastian, Bastian Schern schrieb am 06.10.2003 23:39:
Hallo,
ich habe eine Klassenmethode, die je nach gesetzten Falgs die Ausgabe auf den Bildschirm und/oder in ein File macht:
int DebugLog::out( string text ) { // output to console if( log_to_console == true ) { cout << text; }
// output to log file if( log_to_file == true ) { file << text; }
return 0; }
Wie bekomme ich es hin, dass es nicht nur für "string" funktioniert, sondern für alle Typen die "cout" unterstützt?
Ganz einfach - indem du für jeden dieser Typen eine Methode "DebugLog::out()" schreibst: int DebugLog::out(int nAValue) { ... usw. Wichtig hierbei ist, daß du sämtliche Basistypen unterstützen mußt, sonst wird der Compiler bei der Typkonvertierung sich immer wieder über Mehrdeutigkeiten beklagen (auch signed / unsigned-Varianten nicht vergessen). Gruß Raimund
Raimund Hölle schrieb: [...]
Wie bekomme ich es hin, dass es nicht nur für "string" funktioniert, sondern für alle Typen die "cout" unterstützt?
Ganz einfach - indem du für jeden dieser Typen eine Methode "DebugLog::out()" schreibst:
int DebugLog::out(int nAValue) { ... usw.
Wichtig hierbei ist, daß du sämtliche Basistypen unterstützen mußt, sonst wird der Compiler bei der Typkonvertierung sich immer wieder über Mehrdeutigkeiten beklagen (auch signed / unsigned-Varianten nicht vergessen).
Das war mir eigentlich schon klar. Das lässt sich doch aber bestimmt einfacher lösen, cout unterstützt ja schon alle Standardtypen. Geht das nicht irgendwie mit einem Template? Viele Grüße Bastian
On Tuesday 07 October 2003 12:38, Bastian Schern wrote:
Raimund Hölle schrieb: [...]
Wie bekomme ich es hin, dass es nicht nur für "string" funktioniert, sondern für alle Typen die "cout" unterstützt?
Ganz einfach - indem du für jeden dieser Typen eine Methode "DebugLog::out()" schreibst:
int DebugLog::out(int nAValue) { ... usw.
Wichtig hierbei ist, daß du sämtliche Basistypen unterstützen mußt, sonst wird der Compiler bei der Typkonvertierung sich immer wieder über Mehrdeutigkeiten beklagen (auch signed / unsigned-Varianten nicht vergessen).
Das war mir eigentlich schon klar. Das lässt sich doch aber bestimmt einfacher lösen, cout unterstützt ja schon alle Standardtypen. Geht das nicht irgendwie mit einem Template?
Hi, klar geht das: template<typename T> int DebugLog::out( const T& text ) { // output to console if( log_to_console == true ) { cout << text; } // output to log file if( log_to_file == true ) { file << text; } return 0; } Ciao Sebastian
Sebastian Huber schrieb:
On Tuesday 07 October 2003 12:38, Bastian Schern wrote:
Raimund Hölle schrieb: [...]
Wie bekomme ich es hin, dass es nicht nur für "string" funktioniert, sondern für alle Typen die "cout" unterstützt?
Ganz einfach - indem du für jeden dieser Typen eine Methode "DebugLog::out()" schreibst:
int DebugLog::out(int nAValue) { ... usw.
Wichtig hierbei ist, daß du sämtliche Basistypen unterstützen mußt, sonst wird der Compiler bei der Typkonvertierung sich immer wieder über Mehrdeutigkeiten beklagen (auch signed / unsigned-Varianten nicht vergessen).
Das war mir eigentlich schon klar. Das lässt sich doch aber bestimmt einfacher lösen, cout unterstützt ja schon alle Standardtypen. Geht das nicht irgendwie mit einem Template?
Hi, klar geht das:
template<typename T> int DebugLog::out( const T& text ) [...]
Cool, genau das habe ich gesucht. Vielen Dank Bastian
participants (3)
-
Bastian Schern
-
Raimund Hölle
-
Sebastian Huber