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 :

pointeur membre static de classe


Sujet :

C++

  1. #1
    Membre � l'essai
    Inscrit en
    Ao�t 2004
    Messages
    5
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5
    Par d�faut [R�solu] pointeur membre static de classe
    Bonjour � tous,

    Je suis actuellement en train de d�velopper un projet bas� sur le rubik's cube. Mon cube est d�compos� en unit� (26 + celle du centre) et sont textur�es (le tout �tant d�velopp� en OpenGL). Sachant que toutes ces unit�s partagent les m�mes textures, j'ai une variable statique dans ma classe CRcdUnit (classe d'une unit� du cube) qui n'est autre qu'un tableau de pointeurs sur une class CTexImage. Voici � quoi ressemble ces deux classes:

    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
     
    class CTexImage
    {
    public:
       CTexImage(void);
       CTexImage(const char *);
       ~CTexImage(void);
     
    private:
       //toutes les données nécessaire à la génération d'une texture.
    };
     
    class CRcdUnit
    {
    public:
       CRcdUnit(float, float, float);
       ~CRcdUnit(void);
     
       static bool loadTextures(void);
     
    private:
       static CTexImage **m_ppTextures;
     
    private:
       //toutes les autres variables nécessaires.
    };
     
    CTexImage **CRcdUnit::m_ppTextures = NULL;
    La fonction CRcdUnit::loadTextures permet tout simplement (comme son nom l'indique :p) de charger les textures.

    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
     
    bool CRcdUnit::loadTextures(void)
    {
       bool res = true;
     
       m_ppTextures = new CTexImage[MAX_TEXTURES];
     
       res &= ((m_ppTextures[0] = new CTexImage("image0.tga")) != NULL);
       res &= ((m_ppTextures[0] = new CTexImage("image1.tga")) != NULL);
       // ...
     
       //vérification de res et libération des ressources utilisées si = false.
     
       return res;
    }
    Voila, alors quand je compile (avec Visual .NET) j'obtiens une erreur de linkage m'expliquant que m_ppTextures existe deja (error LNK2005 de m�moire). Y a-t-il une fa�on particuli�re d'initialiser des membres statiques pointeurs ? Je ne vous cache pas que j'ai pas �norm�ment chercher non plus, car il �tait 4h du mat et que je suis actuellement au travail (rohhh c'est pas bien ca :p).

    Si quelqu'un � une id�e du probl�me...


    Merci � tous

    Olivier.

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    77
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 77
    Par d�faut
    la ligne

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CTexImage **CRcdUnit::m_ppTextures = NULL;
    ne devrait pas �tre dans l'include mais dans l'impl�mentation de la calsse

  3. #3
    Membre � l'essai
    Inscrit en
    Ao�t 2004
    Messages
    5
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5
    Par d�faut
    Dohhh ! mon dieu que j'ai honte...

  4. #4
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Comme pour tous les membres statiques :
    - Dans le .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    class A
    {
      static int i;
    };
    - Dans un .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    int A::i;
    // Ou s'il y a une valeur initiale
    int A::i = 10;
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

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

Discussions similaires

  1. R�ponses: 7
    Dernier message: 05/04/2011, 17h19
  2. Delete d'un membre static de classe
    Par Efcis dans le forum C++
    R�ponses: 50
    Dernier message: 16/09/2010, 16h36
  3. Pointeur sur des fonctions membres d'une classe
    Par Muetdhiver dans le forum C++
    R�ponses: 3
    Dernier message: 15/02/2006, 11h35
  4. R�ponses: 3
    Dernier message: 12/01/2006, 21h26
  5. R�ponses: 3
    Dernier message: 28/11/2005, 12h15

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