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:
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
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;
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).
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; }
Si quelqu'un � une id�e du probl�me...
Merci � tous
Olivier.
Partager