Salut,

J'ai récupéré la bibliothèque Poco qui me permet de logger des messages compatibles avec le type std::string.

Grosso modo il y a une methode comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
void debug(std::string& s);
Mon idée est de permettre d'utiliser cette methode avec une std::stringstream
Donc je peux créer un adaptateur qui fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void stream_debug(std::stringstream& stream)
{
      instanceLogger.debug(stream.str());
}
Pour que le logger soit pratique à utiliser je voudrais pouvoir passer des streams "composées" directement, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
double d = 1.2345;
stream_debug("la valeur de d est " << d);
Mais ça ne marche pas car la chaine constante ne supporte pas "<<".
Donc j'ai imaginé le contournement suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
#define LOG(a) stringstream s; s << a << endl; stream_debug(s);
double d = 1.2345;
LOG("la valeur de d est " << d);
Ca marche mais est ce qu'il y a mieux à faire ???
Peut-on se passer de la macro ?

Merci