Bonjour à tous,

Je suis en train d'écrire un programme, et j'ai un petit problème avec la surcharge de l'opérateur << de ma classe hétérogène

j'ai une classe hétérogène défini comme suit:

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
class Systeme : public vector<Oscillateur* >
 
{
 
 
 
// (...)
 
 
 
 
public:
 
//surcharge externe
 
friend ostream& operator<<(ostream& out, Systeme& obj)
{
	out<<"Le systeme est compose de "<<obj.size()+1<<" objet(s) indépendant(s):"<<endl<<endl;
	for (unsigned int i(0); i<obj.size(); ++i)
 
	{
 
		out<<"Oscillateur "<<j<<":"<<endl
 
		   <<(obj)[i]<<endl<<endl;
 
	}
 
	return out;
 
}
};
et un programme de test :
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
 
 
//  (...)
int main()
{
 
 
	Systeme test;
 
	Vecteur o1(0.,1.,0.);
	Vecteur a1(3.,4.,5.);
	test.push_back(new Ressort (o1, a1, 0.,0., -5., 10., 20., 4.));
 
	Vecteur o2(2.,5.,4.);
	Vecteur a2(9.,6.,8.);
	test.push_back(new Ressort (o2, a2, 0., 0., 6., 70., 10., 27.));
 
	Vecteur o3(6.,1.,5.);
	Vecteur a3(6.,4.,75.);
	test.push_back(new Pendule (o3, a3, 0., 0., -1., 43., 50.));
 
	cout<<test<<endl;
	return 0;
};
Quand je compile et que je lance le programme, il me donne:
Le systeme est compose de 5 objet(s) indépendant(s):

Oscillateur 1:
0x80500c0

Oscillateur 2:
0x8050238

Oscillateur 3:
0x8050360
L'erreur vient de toute évidence de la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<<(obj)[i]<<endl<<endl;
Les constructeurs et surcharge externe des classes Vecteur, Oscillateur, Ressort, Pendule étant corrects (j'ai des programmes de test rien que pour eux ), ça ne peut venir que de là, mais je ne comprend pas comment faire comprendre qu'il faut utiliser l'opérateur de sortie de Ressort (si la i-ème ligne est un ressort) et pas un autre.

Quelqu'un peut m'aider? ça fait plusieurs heures que je susi dessus, et là, même après pas mal de recherches sur le web, je ne trouve rien.

(Note: le destructeur s'occupe de libérer la mémoire demandée par les new)