Bonjour,
J'aimerai surcharger l'opérateur << mais ajouter un parametre à ma surcharge.
Exemple épuré:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class mon_printf { mon_printf& operator<<(char const*) { printf(" %s ", str); return *this; } }Dans cet exemple, si j'apelle ma_classe.test() j'aurai affiché :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class ma_classe : public mon_printf { ma_classe& trace() { printf("trace depuis la classe ma_classe : "); return *this; } void test() { trace() << "test\n"; } }
trace depuis la classe ma_classe : test
Maintenant j'aimerai ajouter un parametre a la fonction trace() mais qui soit transmit aux fonctions de la classe mon_printf.
Le but serait d'avoir :
donc je voudrais qu'en fonction du parametre niveau, avoir l'affichage du printf dans ma_classe mais aussi dans mon_printf (l'affichage de "test" dans cet exemple).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class ma_classe : public mon_printf { ma_classe& trace(int niveau) { if(niveau >= niveau_log_courrant) printf("trace depuis la classe ma_classe : "); return *this; } void test() { trace(1) << "test\n"; } }
Comment faire ?
merci.
PS : le but de cette classe mon_printf est d'avoir un log thread safe (ce qui n'est pas le cas de std::cout), et d'avoir des logs qui m'affichent dans quelle classe je me trouve. Par extention le log pourra ajouter tout seul des affichages pour savoir par exemple l'adresse de la classe ou certaines valeurs de cette classe.
Il suffira d'ecrire ca dans la fonction trace() de chaque classe.
Partager