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 :

Probl�me d'impl�mentation du singleton


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    �tudiant
    Inscrit en
    Juin 2007
    Messages
    49
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Par d�faut Probl�me d'impl�mentation du singleton
    Bonjour � tous, j'ai un probl�me d'impl�mentation du singleton.

    ConfigParser.hpp :

    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
     
    #ifndef ConfigParser_h
    #define ConfigParser_h
    #include <map>
    #include "tinyxml/tinyxml.h"
    class ConfigParser
    {//singleton
     
        private:
        static ConfigParser* myInstance;
        ConfigParser();
     
        public :
        static ConfigParser* getInstance();
        ~ConfigParser();
        float getParam(char*); //return the param with the specified name, param are always of float type
     
        private:
        void addParam(const char*, float);//key, value
        std::map<const char*,float> myConfigVars;
    };/#endif
    ConfigParser.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "ConfigParser.hpp"
    ConfigParser* ConfigParser::getInstance()
    {
        if(!ConfigParser::myInstance)
        {
            ConfigParser::myInstance=new ConfigParser();
        }
        return ConfigParser::myInstance;
    }
     
    etc...
    L'erreur est "undefined reference to ConfigParser::myInstance.

    De plus je n'initialise pas le pointeur et je ne sais pas o� le faire.

    Merci d'avance !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    D�tails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par d�faut
    Salut,

    Ca ne r�pond techniquement pas � ta question (cf. la FAQ pour �a) mais pourquoi ne pas faire plus simple ?
    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
    class ConfigParser
    {//singleton
      public :
        static ConfigParser& getInstance();
        float getParam(char*); //return the param with the specified name, param are always of float type
     
      private:
        void addParam(const char*, float);//key, value
        std::map<const char*,float> myConfigVars;
    };
     
    ConfigParser& ConfigParser::getInstance()
    {
        static ConfigParser parser;
        return parser;
    }
    MAT.

  3. #3
    Membre chevronn� Avatar de aziz jim
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455
    Par d�faut
    Le membre static doit �tre initialis� dans le fichier .cpp .

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "ConfigParser.hpp"
     
    ConfigParser* ConfigParser::myInstance = NULL;
     
    ConfigParser* ConfigParser::getInstance()
    {
        if(!ConfigParser::myInstance)
        {
            ConfigParser::myInstance=new ConfigParser();
        }
        return ConfigParser::myInstance;
    }

  4. #4
    Membre actif
    �tudiant
    Inscrit en
    Juin 2007
    Messages
    49
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Par d�faut
    J'ai r�solu le probl�me en mettant tout le code (header+impl) dans un seul fichier ...

    Bizarre cependant je suis pas fan de cette technique ...

    Merci quand m�me.

  5. #5
    Membre �clair� Avatar de vdumont
    Profil pro
    �tudiant
    Inscrit en
    F�vrier 2006
    Messages
    510
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 510
    Par d�faut
    J'ai r�solu le probl�me en mettant tout le code (header+impl) dans un seul fichier ...

    Bizarre cependant je suis pas fan de cette technique ...

    Merci quand m�me.
    En effet c'est tr�s laid de proc�der ainsi.

  6. #6
    Membre chevronn� Avatar de aziz jim
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455

Discussions similaires

  1. Probl�me d'impl�mentation du patron Singleton
    Par bkwaadbk dans le forum Langage
    R�ponses: 0
    Dernier message: 14/04/2012, 19h14
  2. R�ponses: 7
    Dernier message: 03/03/2007, 19h15
  3. R�ponses: 2
    Dernier message: 28/12/2006, 16h54
  4. [VS2005] Probl�me pour faire un singleton
    Par mister3957 dans le forum Visual C++
    R�ponses: 2
    Dernier message: 01/02/2006, 08h55
  5. R�ponses: 12
    Dernier message: 01/07/2004, 11h03

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