Bonjour à tous.
J'ai un programme assez complexe, dans lequel j'ai une quinzaine d'occasions de vouloir utiliser exit() après avoir affiché un message.
Voici le code de base pour ce genre de sorties
Plutôt que d'avoir quinze fois ce genre de choses, j'essaie d'obtenir: if (!condition) leave(-4) << "erreur grave!" << endl;Pour se faire, un peu naïvement, je raiie cerr en mettant l'appel à exit() dans le destructeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (!condition) { cerr << "erreur grave!" << endl; exit(-4); }
Sauf que, ca ne compile pas avec g++ 4.4.5:
Voici mon programme de démonstration:Envoyé par g++ -Wall -Wextra -Werror
Quelqu'un a-t-il une suggestion?
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 #include <iostream> #include <cstdlib> class leaver { private: int flag; public: explicit leaver(int i) : flag(i) {} ~leaver() {::exit(flag);} }; template <typename T> leaver& operator<<(leaver& leaver, T const& t) { std::cerr << t; return leaver; } int main() { leaver(1) << "salut"<< std::endl; return 0; }
Partager