J'essaye desesperemment de creer une classe qui agisse comme std::cout.
Code :
- class Logger {
- public:
- enum Level {
- Debug,
- Info,
- Warn,
- Error,
- Fatal
- };
- Logger() {
- }
- void operator<<(std::ostream & os) {
- std::ostringstream ostr;
- ostr << os;
- log(Level::Debug, ostr.str());
- }
- friend std::ostream & operator<<(std::ostream & os, Logger & logger) {
- return os;
- }
- void log(Level level, const std::string & message) {
- ...
- }
- };
|
Je voudrais obtenir ceci comme syntax:
Code :
- Logger logger;
- logger << "erreur blabla: " << x << y;
- //syntax moins sympa que je voudrais eviter:
- logger.log(Level::Debug, "erreur blabla: " + itoa(x) + itoa(y));
|
J'ai essaye pas mal de trucs et je comprends pas comment surcharger l'operator<< pour que Logger fonctionne comme un ostream (j'ai aussi essaye l'heritage et je n'y arrive pas non plus).
Si quelqu'un maitrise les iostreams je lui en serai reconnaissant !