Bonjour,

je dois faire un logger pour une application qui comporte beaucoup de classes différentes. Et quasiment toutes ces classes ont besoin du logger.

Pour l'instant, l'en-tête de mon logger ressemble à ça (c'est un singleton):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Logger
{
public:
	// destructor
	~Logger();
 
	// get instance
	static Logger* GetInstance();
 
	// log function
	void Log(std::string text);
 
private:
	// constructor	
	Logger();
 
	// unique instance of Logger
	static Logger* m_instance;
};
 
// initialization of the unique instance
Logger* Logger::m_instance;
J'aurais avoir votre avis sur 2 points:
1/ J'aimerais utiliser mon logger en variable globale, de façon à ne pas avoir à faire passer une référence du logger à chacune des classes qui vont l'utiliser. Et j'aurais aimé instancier cette variable globale dans logger.h, de façon à ce que j'ai juste besoin d'inclure logger.h lorsque j'ai besoin du logger.
Mais je ne sais pas trop comment faire.

2/ J'ai besoin de passer des paramètres au constructeur (niveau de log par defaut, file descriptor du fichier log, ...). Le problème, c'est que le constructeur est appelé par GetInstance(), et que je ne peux raisonnablement pas passer des paramètres à GetInstance(). Comment faire donc?