Bonjour.
Je cherche � mod�liser une classe qui permettra � mon programme de tracer tout ce qu'il fait.
Je voudrais pouvoir m'en servir comme �a (en gros) :
Dans cet exemple, je suppose quelque chose comme :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 LogsManager a; a->log("Je commençe le programme"); // certains des logs sont statiques a->log("Zut, j'ai un objet d'id " + id + " qui est négatif"); // mais pas tous // on peut (doit) donner un type à un log a->log("Je commençe à parser", LogsManager::Parsing); // on peut même en donner plusieurs std::list<LogsManager::LogsTypes> types; types.push_back(LogsManager::Parsing); types.push_back(LogsManager::StrangeData); a->log("J'ai parsé la valeur " + val + " qui est supérieure à 100", types);
Ceci ne semble pas pr�senter de grandes difficult�s.
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 class LogsManager { public : ... public : enum LogsTypes { Parsing = 0, StrangeData, ... } .... }
Sauf que cela me chagrine que les types soient aussi dynamiques.
Cela va me donner derri�re une fonction qui aura comme t�te :
Et �a ce n'est pas tr�s joli.
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
23 void LogsManager::log(const std::string& log, const std::list<LogsManager::LogsTypes>* types) { if (types) { std::list<LogsManager::LogsTypes>::iterator it; for(it = types.begin(); it != types.end(); it++) { switch (*it) { case Parsing : ... break; case StrangeData : ... break; ... } } .... } }
J'imagine qu'il existe une chouette solution pour faire cela statiquement, peut-�tre avec un genre de typelist, mais tout ce que je peux imaginer est terriblement compliqu�.
Est-ce que quelqu'un saurait m'orienter vers une solution plus �l�gante ?
Merci par avance
Partager