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:
et un programme de test :Code:
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; } };
Quand je compile et que je lance le programme, il me donne:Code:
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; };
L'erreur vient de toute évidence de la ligne :Citation:
Le systeme est compose de 5 objet(s) indépendant(s):
Oscillateur 1:
0x80500c0
Oscillateur 2:
0x8050238
Oscillateur 3:
0x8050360
Les constructeurs et surcharge externe des classes Vecteur, Oscillateur, Ressort, Pendule étant corrects (j'ai des programmes de test rien que pour eux :mrgreen: ), ç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.Code:<<(obj)[i]<<endl<<endl;
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)