Chcę utworzyć klasę rejestratora taki, że z funkcji takich jak to:jak mogę napisać klasy rejestratora z cout styl interfejsu (logger << "Błąd:" << endl << val;)
Logger log;
log << "Error: " << value << "seen" << endl;
To powinno wydrukować niestandardową sformatowaną wiadomość. Na przykład. „09.12.2009 11:22:33 Błąd 5 widział”
Moja prosta klasa aktualnie wygląda tak:
class Logger {
private:
ostringstream oss;
public:
template <typename T>
Logger& operator<<(T a);
}
template <typename T>
Logger& Logger::operator<<(T a) {
oss << a;
return *this;
}
void functionTest(void) {
Logger log;
log << "Error: " << 5 << " seen";
}
Spowoduje OSS poprawnie mieć bufor „Błąd: 5 widział”. Ale nie wiem, jaką inną funkcję muszę napisać/zmodyfikować, żeby coś zostało wydrukowane na ekranie. Czy ktoś wie, jak uzyskać to do pracy lub czy istnieje inny sposób zaprojektowania tej klasy, aby moja funkcjonalność działała?
Pytanie: Lokalizacja. znacznik czasu Czy chcesz wyłączyć znacznik czasu: 1) Każde wyrażenie 2) Tylko na początku każdego wiersza Czy chcesz, aby linia sama się zakończyła (jak na twoją funkcję Test()). Zasadniczo potrzebujesz trochę więcej szczegółowe informacje na temat warunków, w których dodawany jest znacznik czasu.Jeśli logujesz się do pliku konsoli zarówno? Dlaczego potrzebujesz specjalnej klasy i dlaczego można; t używać standardowego strumienia? –
Martin, to tylko przykładowa klasa Obnażyłem klasę oryginalnego rejestratora tylko z problemem dotyczącym użycia stylu cout logger. –