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 :

[Help]Membre static et Linker Error


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par d�faut [Help]Membre static et Linker Error
    Bonjour,
    Je devellope actuellement un dll qui plante au link apr�s la compilation.

    voici ma classe :

    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
    class Carte{ //Singleton
     
     
    private:
     
    	Carte(){
    		//Initialisation via fichier texte de la liste  list<Debitmetre*> ld
    	}
     
     
    	private:
    	static Carte *c;
     
    	public:
    	static Carte * getCarte(){ 
    		if(c == NULL)
    			c = new Carte();
    		return c;
    	}
     
    	list<Debitmetre*> ld;//Liste des debitmetres associés à la carte
     
     
    };

    Quand je l'appelle dans fonctions.cpp ( qui contient les fonctions d'interactions avec ma dll ), plantage.
    J'ai vu pas mal d'article qui parle de ce type d'erreur mais je comprend pas comment je dois le r�soudre...


    Appel de la m�thode statique qui renvoi mon instance de CARTE :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include "carte.h"
    #include "extern.h" //fichier contenant les fonctions de la dll fournies que je dois interfacer avec mon programme
     
     
    static Carte* car;//variable globale destinée à stocker l'instance pour garder les informations entre chaque accés à la dll.
     
     
    bool connect(char id)
    {
    car=Carte::getCarte();
     
    return true;
    }

    Toute aide est la bienvenue merci.

  2. #2
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Je te conseillerais de passer faire un tour dans la FAQ qui traite des donn�es et fonctionstatiques, et plus particuli�rement l'entr�e qui traite de l'initialisation des donn�es statiques

    Tu y verra que tu dois initialiser ton membre statique dans un et un seul fichier d'impl�mentation sous la forme de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Type TaClass::TonMembreStatic = saValeurDeDepart
    Autrement dit, tu dois �crire
    Une fois que tu as ton singleton, il n'est absolument pas n�cessaire de garder une variable globale:
    D�clare un pointeur de type carte, demande l'instance, et roulez jeunesse

    L'utilisation sera donc toujours de l'ordre de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void fonction()
    {
       Carte* inst=Carte::getCarte();
       /* ...*/
       /*utilisation de inst pour ce qui t'intéresse */
     
    }
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par d�faut
    Merci ^^

    j'avais r�solu le probl�me en faisant un autre style de singleton, le singleton C++ de Wikipedia.

    Mais effectivement, j'avais jamais fait gaffe � ce d�tail xD.

    Bonne journ�e

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Linker error] DLL -> undefined reference to `vtable ?
    Par Zenol dans le forum D�buter
    R�ponses: 17
    Dernier message: 25/10/2005, 10h09
  2. [Debutant] Probl�me avec des membres static
    Par Mathieu.J dans le forum D�buter
    R�ponses: 4
    Dernier message: 24/08/2005, 17h09
  3. Linker error :^/
    Par Ekinoks dans le forum OpenGL
    R�ponses: 15
    Dernier message: 05/09/2004, 14h18
  4. pointeur membre static de classe
    Par Ca$ul dans le forum C++
    R�ponses: 3
    Dernier message: 26/08/2004, 13h02
  5. [Kylix] probleme (LINKER ERROR)
    Par subzero82 dans le forum EDI
    R�ponses: 2
    Dernier message: 14/05/2004, 19h28

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