[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:
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:
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.