Bonjour,
Je suis embêté, face à un problème dont je n'arrive pas à trouver de solution :
J'ai une classe TEMPLATE qui est en fait un Vecteur Template Dynamique.
J'aimerais pouvoir instancier ce vecteur plusieurs fois, et les placer dans un tableau.
Exemple :
CVecteur<CNike> vec1;
CVecteur<CPuma> vec2;
CVecteur<CAdidas> vec3;
...
Et avoir un tableau alors, récapitulatif regroupant ces derniers vecteurs dans chacune de ses cases :
TableauVecteur[0] = vec1;
TableauVecteur[1] = vec2;
TableauVecteur[2] = vec3;
...
Seulement, je n'arrive pas à trouver le moyen de faire de cette manière.
Voici ma classe Template :
Et voila la classe que j'ai tenté de faire, pour arriver à en faire un Tableau contenant sur chacune de ses cases, un des vecteurs :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 #ifndef __CVECTEUR_H__ #define __CVECTEUR_H__ #include <iostream.h> //#include <sstream> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> #pragma once template <class XTYPE> struct noeud { XTYPE valeur; int position; noeud<XTYPE> *pSuiv; noeud(XTYPE n, noeud<XTYPE> *s):valeur(n),pSuiv(s) {}; }; template <class XTYPE> class CVecteurIter; template <class XTYPE> class CVecteur { private: noeud<XTYPE> *v_pVec; public: CVecteur():v_pVec(0) {}; ~CVecteur(void) { noeud<XTYPE> *pCur, *pPrec; pCur = v_pVec; while(pCur != NULL) { pPrec = pCur; pCur = pCur->pSuiv; delete pPrec; } }; char empty(void) { return v_pVec ? 0:1; } XTYPE head(void) { return v_pVec->valeur; } virtual void insert(XTYPE &n) { v_pVec = new noeud<XTYPE> (n,v_pVec); //int test=0; }; void display(void) { CVecteurIter<XTYPE> it(*this); cout<<"("; while(!it.end()) { XTYPE t( (XTYPE&)it ); //cout<<t<<", "; cout<<it.getValue()<<", "; it++; } cout<<"\x8\x8)"<<endl; }; void removeAll(void) { noeud<XTYPE> *pCur, *pPrec; pCur = v_pVec; while(pCur != NULL) { pPrec = pCur; pCur = pCur->pSuiv; delete pPrec; } v_pVec = pCur; } friend class CVecteurIter<XTYPE>; }; template<class XTYPE> class CVecteurIter { private: CVecteur<XTYPE>& v_vec; noeud<XTYPE> *v_pCur; public: CVecteurIter(CVecteur<XTYPE>& v):v_vec(v),v_pCur(v.v_pVec) {}; int end() { return v_pCur == 0; } void reset () { v_pCur = v_vec.v_pVec; } char operator ++ () { if(v_pCur) { v_pCur = v_pCur->pSuiv; return 1; } else return 0; } char operator ++ (int) { return operator ++ (); } operator XTYPE() const { return v_pCur->valeur; } XTYPE& operator& (void) { return v_pCur->valeur; } XTYPE getValue() { return v_pCur->valeur; } }; #endif
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 #include "CArmoire.h" #include "CVecteurTemplate.h" #include "CAuto.h" CArmoire::CArmoire() { int nb = 1; CVecteur<CAuto> vec1; } CArmoire::CArmoire(int etageres) { arm_etageres = etageres; cout<<endl<<arm_etageres<<" créées."<<endl; } CArmoire::~CArmoire() { } void CArmoire::ajouterElem(int etage, CVecteur<CAuto>& listeAuto) { this[etage] = listeAuto; } void CArmoire::ouvrirArmoire() { for(int i=0;i<arm_etageres;i++) { cout<<endl<<"Etagères numéro : "<<i+1<<endl; this[i].display(); } }
Partager