Salut à tous,

j'ai un soucis à base de vector et de push. Je vais essayer de vous résumer ça :

J'ai 2 classes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
class MaPetiteClasse
{
public :
MaPetiteClasse()
MaPetiteClasse(params...)
~MapetiteClasse()
operator=(...)
MaPetiteClasse(const MaPetiteClasse &m)
 
private : 
//des données statiques uniquement
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
template <class T>
class MaGrosseClasse
{
private : 
vector<T> toto;
//d'autres données, toutes statiques
 
public:
//idem au dessus, un constructeur par défaut, un constructeur avec des params, un =, un constructeur de recopie et un destructeur.
 
};

J'instancie un MaGrosseClasse<MaPetiteClasse>. J'ai un vector<MaGrosseClasse> et il m'arrive de faire des push_back() dedans. Le problème est que le contenu statique de MaGrosseClasse est correctement recopié dans le vector<MaGrosseClasse>, mais pas le vector<MaPetiteClasse>.

Pour info :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
template <class T>
MaGrosseClasse<T>::MaGrosseClasse(const class MaGrosseClasse<T> & c)
{
//bete copie des data statiques
(...)
 
for(int i = 0 ; i < c.size() ; i++)  //MaGrosseClasse::size() renvoie toto.size();
	{
		T t = c.GetItem(i);
		items.push_back(t);
 
	}
}

Ce qui me surprend le plus c'est que, en suivant pas à pas le déroulement de ce constructeur de recopie, tout se passe comme il faut, le vector est bien recopié, mais dès qu'on sort de la fonction, toto redevient vide.
Si vous avez des idée, je suis preneur.