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 :

[LINKAGE] probleme avec Singleton


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut [LINKAGE] probleme avec Singleton
    Bonjour,

    Voici mon souci,
    J ai créée une classe avec un singleton (ManagerSingleton). il est hyperbasique
    il est dans un fichier ManagerSingleton.h

    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
     
    #pragma once
    // Include files
    #include "stdhdrs.h"
    class ManagerSingleton
    {
    protected:
      // Constructeur/destructeur
    	ManagerSingleton ();
      ~ManagerSingleton ();
      // Variables membres
      int _value;
      static ManagerSingleton *_singleton;
     
    public:
      // Interface publique
      // Fonctions de création et destruction du singleton
    	static inline ManagerSingleton* getInstance ()
    	{
    	if (_singleton == NULL )
    	{
    		//        std::cout << "creating singleton." << std::endl;
    		_singleton =  new ManagerSingleton;
    	}
    	else
    	{
    		//   std::cout << "singleton already created!" << std::endl;
    	}
     
    	return _singleton;
    }
     
    static void  inline kill ()
    {
    	if (NULL != _singleton)
    	{
    		delete _singleton;
    		_singleton = NULL;
    	}
    }
     
    };
    Tous va bien jusque la
    le je souhaite appele ce singleton dans une autre class
    J ajoute un include dans le header de ma class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "ManagerSingleton.h"
    puis dans le .cpp
    je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ManagerSingleton* ManagerSingleton = ManagerSingleton::getInstance ();
    à partir du moment ou j ajoute cette ligne de code j ai l erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	116	error LNK2019: unresolved external symbol "protected: __thiscall ManagerSingleton::ManagerSingleton(void)" (??0ManagerSingleton@@IAE@XZ) referenced in function "public: static class ManagerSingleton * __cdecl ManagerSingleton::getInstance(void)" (?getInstance@ManagerSingleton@@SAPAV1@XZ)
    et j arrive pas en m en depetrer

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 58
    Par défaut
    essaie de remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	ManagerSingleton ();
      ~ManagerSingleton ();
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	ManagerSingleton () {}
      ~ManagerSingleton () {}

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Bien le bonjour,

    Par le plus grand des hasards, n'aurais-tu pas oublié de définir ta donnée statique static ManagerSingleton *_singleton; ?

    http://c.developpez.com/faq/cpp/?pag..._static_erreur

  4. #4
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Merci
    oui khayyam90 c est fort probablement ça.
    mais alors comment faire pour le declarer dans le .cpp ?
    Alors que ma classe est est declare dans un Header ?

  5. #5
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Citation Envoyé par magnus2005
    alors comment faire pour le declarer dans le .cpp ?
    en mettant quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ManagerSingleton *ManagerSingleton::_singleton;
    dans ton .cpp

    pas dans une fonction particulière, par exemple (comme dans la faq) juste après les #include. Et cette définition devra être unique, elle devra être dans une seule unité de compilation.

  6. #6
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    pas besoin de mettre static dans la declaration ?

    avec ou sans static j ai l erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	2	error C2039: '_singleton' : is not a member of 'ManagerSingleton'	d:\workspace\vnc_winsrc\winvnc\managersingleton.cpp	5
    Je suis desolé mais je trouve
    http://c.developpez.com/faq/cpp/?pag...SS_init_static

    qui est juste avant et qui declare sa variable static dans son header

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

Discussions similaires

  1. PROBLEME AVEC SINGLETON
    Par Munoz33 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/03/2008, 08h28
  2. probleme avec singleton
    Par donkeyquote dans le forum C++
    Réponses: 1
    Dernier message: 02/02/2008, 19h42
  3. Problème de linkage SDL avec Builder 6 pro
    Par Invité dans le forum SDL
    Réponses: 5
    Dernier message: 28/04/2006, 02h44
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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