OOP
-
aidenchloe7 schrieb:
. o O ( Ich frag mich immer, wie solche Menschen reden *eeek* )
-
Hey Sepp warum sollte LOG eine Klassenvariable sein?
-
aidenchloe7 schrieb:
Hey Sepp warum sollte LOG eine Klassenvariable sein?
Du oeffnest die Datei jedes Mal und schliesst sie wieder. Das ist sehr langsam und kann zu Fehlern fuehren, wenn sich die Datei irgendwann mal nicht oeffnen laesst.
Stattdessen lohnt es sich, sie einmal zu oeffnen und solange offen zu halten, wie man braucht.
-
Aber Marthog ich habe eine Logger instance erstellt. Weshalb sollte ich noch eine weitere erstellen. Wenn ich etwas Logger verwende ich:
LOG("Das ist mien Beispiel Log");
-
Trotzdem öffnest du die Datei durch den Erstellen des ofstreams jedes Mal!
BTW: ><((((°> ?
-
Du hast eine Loggerinstanz, aber oeffnest die Datei immer wieder neu in
std::ofstream log("server.log", std::ios::app); write(now, log, message); std::cout << now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec << " " << message + "\n";
Oeffne die Datei einmal in Constructor und behalte sie dann offen.
-
So un besser
void Logger::send(const std::string& message) { time_t t = time(0); struct tm *now = localtime(& t); static std::ofstream log("server.log", std::ios::app); write(now, log, message); std::cout << now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec << " " << message + "\n"; }
-
Wieso dann überhaupt eine Klasse? Schreibe direkt eine freie Funktion ohne die Klasse.
-
Nathan ich verstehe das nicht, was für eine Klasse/Funktion?
-
Du hast eine Klasse Logger ohne Membervariablen als Singleton.
Sie ist absolut überflüssig. Schreibe direkt eine freie Funktion.
-
Mit freire Funktionen meinst du schon externe?