Si tu tiens à lever une exception dans le constructeur, j'aurais plutôt utilisé un singleton et la fonction de création (avec paramètres) du singleton ressemblerait à :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | Log * Log::s_log = 0;
/*static*/ Log & Log::create_instance(params const & p) 
{
    try {
        s_log = new Log(p);
        return *s_log;
    } catch (std::exception & e) {
        Signaler l'erreur à qui pourrait s'en occuper ... Mais qui ?
    }
    s_log = new Log(); // le ctr par défaut étant no-throw
    // et si il y a un echec sur le new, on est bien embétés de toutes façons
    return *s_log;
}
/*static*/ Log & Log::instance() 
{ assert(s_log); return *s_log; } |