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 :

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
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
#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();
	}
}