Bonjour,
Je souhaite faire une classe Logger spéciale. En effet, je voudrais lors de cet appel :
Log() << "mot1" << 3 << "mot2";
Avoir comme chaine de sortie :
mot1(espace)3(espace)mot2(retour à la ligne)
Je suppose qu'il faudrait compter le nombre de variable qui passe par "<<" mettre des espaces devant tous, ne pas le mettre au premier, et ajouter la fin de ligne au dernier, mais je ne vois aucune manière de m'y prendre...
Voici le code (simplifié) de ma classe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Logger
{
public:
Logger { }
virtual ~Logger(){}
static Logger * _instance;
static Logger & log(); { return *_instance};
template <class T>
Logger & operator <<(const T& log);
protected:
std::ostringstream stream;
private:
virtual void write(const std::string& message)
{
std::cout << ((message ).c_str());
}
};
template <class T> Logger & Logger::operator <<(const T& log)
{
stream << log;
write(stream.str());
stream.str(""); //clear
return log();
}
static Logger& Log() { return Logger::log();} |
Si quelu'un pouvait me dire si cela est faisable ou pas, merci.
Partager