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 :

Singleton et définitions multiples


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut Singleton et définitions multiples
    Bonjour

    J'ai défini un singleton (une classe Utility). Je pense que je merde sur les appels des includes de Utility.h : J'ai un include dans mon Main.pp, mais quand j'en fais un autre dans un cpp j'ai une erreur
    définition multiple de " afp::Utility::instance "
    Voici mon 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #ifndef __UTILITY_H_
    #define __UTILITY_H_
     
    namespace afp {
     
     
    class Utility {
     
     
    public:
    	static Utility* getInstance() {
    		if (Utility::instance == 0) {
    			Utility::instance = new Utility();
    		}
    		return Utility::instance;
    	}
    	static void kill(){
    		if (Utility::instance == 0) {
    			delete Utility::instance;
    		}
    	}
     
    	bool isShowPerf() {
    		return this->showPerf;
    	}
    	void setShowPerf(bool b) {
    		this->showPerf = b;
    	}
     
    	bool isShowDebug() {
    		return this->showDebug;
    	}
    	void setShowDebug(bool b) {
    		this->showDebug = b;
    	}
     
    private:
     
    	bool showPerf;
    	bool showDebug;
    	static Utility* instance;
    };
    Utility *Utility::instance = 0;
    }  // namespace afp
     
    #endif /* UTILITY_H_ */
    Je ne vois pas trop ce qui cloche
    Est ce quelqu'un a une idée?

    Merci d'avance

  2. #2
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    On ne doit pas initialisé des variable global dans un .h, sous peine de gros risque évident de définition multiple >< !

    Si tu veux y avoir accès dans plusieurs unité de compilation, je te conseil vivement l'utilisation du mot clef "extern".

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    L'erreur est bien liée à ce que la variable se trouve définie dans plusieurs .cpp. Sur le singleton, je te conseille la lecture de ce tutoriel sur les DP ainsi que ce billet.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    Merci a vous deux et pour les liens. Ca m'a bien aidé ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de définition multiple
    Par gdpasmini dans le forum C
    Réponses: 40
    Dernier message: 05/07/2006, 13h57
  2. Définition multiple
    Par Goundy dans le forum C
    Réponses: 7
    Dernier message: 02/04/2006, 18h59
  3. définition multiple
    Par elekis dans le forum C++
    Réponses: 3
    Dernier message: 01/03/2006, 16h32
  4. [g++] Définitions multiples
    Par GLDavid dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/12/2005, 16h04
  5. Réponses: 22
    Dernier message: 05/07/2005, 00h04

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