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 : 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; } };
Quand je compile et que je lance le programme, il me donne:
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; };
L'erreur vient de toute évidence de la ligne :Le systeme est compose de 5 objet(s) indépendant(s):
Oscillateur 1:
0x80500c0
Oscillateur 2:
0x8050238
Oscillateur 3:
0x8050360Les constructeurs et surcharge externe des classes Vecteur, Oscillateur, Ressort, Pendule étant corrects (j'ai des programmes de test rien que pour eux
Code : Sélectionner tout - Visualiser dans une fenêtre à part <<(obj)[i]<<endl<<endl;), ç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)
Partager