IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[conception] Logger singleton global


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 292
    Billets dans le blog
    2
    Par défaut [conception] Logger singleton global
    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?

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ne te laisse pas enfermer dans le pattern singleton.

    Prevois une autre function statique qui s'appellrai init(), p.ex.. Fonction que chaque composant exécutable devra appeler lors de son démarrage, depuis le thread principal, bien avant queles autres ne soient lancés.

    Sinon, je ne comprends pas ta première question. Un singleton, c'est une variable globale que l'on a déguisée sous un nom qui n'élève pas (à tord) les soupçons.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. [PHP 5.3] Créer un singleton global à l'application.
    Par BugFactory dans le forum Langage
    Réponses: 4
    Dernier message: 17/11/2009, 11h55
  2. [conception] soucis sur un singleton
    Par r0d dans le forum C++
    Réponses: 12
    Dernier message: 11/07/2007, 11h03
  3. [Conception] Classe abstraite ou singleton
    Par speedster dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2007, 10h39
  4. [C#] variables globales et bonne implémentation singleton
    Par grome dans le forum Windows Forms
    Réponses: 7
    Dernier message: 05/05/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo