Salut a tous.
Voila je vous expose mon petit probleme. Je veux créer une classe representant au choix un arbre binaire ou une liste chainée, le tout en template.
Au niveau fonctionnement normal ca va. Mais c'est la premiere fois que j'essaie de créez une classe en template. Donc je me suis renseigné un peu sur le net mais j'ai encore quelques probleme. voila mon header :
Jusque la normalemen,t pas de probleme... VOici les fonctions que j'ai eu le temps de code pour l'instant :
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 #ifndef __R__CSTOCK__R_6589 #define __R__CSTOCK__R_6589 #include "stdAfx.h" #include <iostream> //CDumange Classe de stockage qui roxe. En mode !ARBRE -> liste chainé. EN mode Arbre -> ben arbre #define MODE_ARBRE 1 #define MODE_NONARBRE 0 template <class TEMP> class CStock { private: TEMP m_value; CStock *m_gauche, *m_droite; int m_ntaille, m_mode; public : void Add (TEMP p_value); void RemoveAll (); TEMP Search (TEMP p_value); int GetSize (); CStock(int p_mode =MODE_NONARBRE); CStock(TEMP p_value, int p_mode =MODE_NONARBRE); ~CStock(); }; #endif
La rien ne va plus... j'ai des messages d'erreur me disant que m_gauche et m_droite n'appartiennent pas a la classe (comme les autres variables membres d'ailleur). J'ai aussi Add qui n'est pas membre de lopérateur ''global namespace.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 CStock::CStock(int p_mode) { m_gauche = 0; m_droite = 0; m_ntaille = 0; m_mode = p_mode } //______________________________________________________________ //Constructeur permettant de rajouter une valeur a la création template <class TEMP> CStock<TEMP>::CStock(TEMP p_value, int p_mode) { CStock(); Add(p_value, p_mode); } //_____________________________________________________________ //Ajout dans l'arbre. Si on est en mode NONARBRE, on ajoute toujours a gauche. template <class TEMP> void CStock<TEMP>::Add(TEMP p_value) { //Si le noeud ou je suis est vide if (TEMP == NULL) { m_value = p_value; m_ntaille ++; } else { //En mode non arbre, j'ajoute toujours a gauche if (m_mode == MODE_NONARBRE) { if(!m_gauche) m_gauche = new CStock(m_mode); *m_gauche.Add(p_value); } else { //Si plus grand, j'essaie d'aller ajouter a droite if (p_value > m_value) { if(!m_droite) m_droite = new CStock(m_mode; *m_droite.Add(p_value); } //Sinon a gauche else { if(!m_gauche) m_gauche = new CStock(m_mode) *m_gauche.Add(p_value); } } } }
Enfin bref rien ne marche :/
Merci d'avance
Partager