Bonjour,
C'est la première fois que j'écris sur un forum, c'est pour dire comme je suis désespérée !
Alors, mon problème est un peu compliqué car j'ai pas mal de classes différentes. Je voudrais créer un vecteur de Pattern. Chaque Pattern étant composé de 2 pointeurs vers des Periodes. Ces periodes sont elles mêmes stockées dans un vecteur.
En fait, je crée d'abord une periode que je mets dans le vecteur vectGeneralPeriode. Puis je crée toutes les autres periodes qui peuvent rentrer dans la 1ière.
Chaque ensemble de 2 periodes forme un Pattern.
Seulement voila, quand j'ajoute mon 3ieme pattern dans mon vecteur vectGeneralPattern, il me change les 2 premiers en me mettant d'importe quoi.
Quelqu'un verrait-il mon erreur ?
Voici mon code.
Pattern.h
Periode.h:
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 #include "Periode.h" class Pattern { private: int id_Pattern; Periode* periodeExt; Periode* periodeInt; public : Pattern(int Zid, Periode* ZperiodeExt, Periode* ZperiodeInt); Pattern(int Zid); ~Pattern(); Periode* getPeriodeExt()const{return periodeExt;} Periode* getPeriodeInt()const{return periodeInt;} int getId_Pattern()const; void setId_Pattern(int id_Pattern); };
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 class Periode { private: int id_Periode; time_t dateDebut; time_t dateFin; public : Periode(int Zid_Periode, time_t ZdateDebut, time_t ZdateFin); ~Periode(); int getId_Periode()const; void setId_Periode(int id_Periode) ; time_t getDateDebutTime_t() { return dateDebut; } time_t getDateFinTime_t() { return dateFin; } };
lancement.h :
et enfin, dans lancement.cpp, la fonction interessante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Lancement { private : vector<Pattern> vectGeneralPattern; vector<Periode> vectGeneralPeriode; public : void generationPattern(Periode* periodeTravail); }
Quand j'affiche mon vecteur de pattern après, les valeurs des periodes des 2 premiers patterns sont modifiées, et je ne comprends pas pourquoi...
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 void Lancement::generationPattern(Periode* periodeTravail) { int id_Pattern=vectGeneralPattern.size(); //en principe,il n'y a aucun pattern pour l'instant int id_Periode=vectGeneralPeriode.size(); // Il y a deja eu 1 periode de créée (periodeTravail) Periode* pperiodeInt=NULL; Periode* pperiodeExt=NULL; int dureeMin=1; int dureeMax=7; int debutPeriode=0; finPeriode=10; for (int dureeExt=dureeMin; dureeExt<=dureeMax;) { for (int pasTemps=debutPeriode; pasTemps<finPeriode-dureeExt; ) { Periode periodeExt(id_Periode, pasTemps, pasTemps+dureeExt); vectGeneralPeriode.push_back(periodeExt); pperiodeExt = & vectGeneralPeriode[id_Periode]; id_Periode++; for (int dureeInt=dureeMin; dureeInt<=dureeExt;) { for (int debutInt=pasTemps; debutInt<=pasTemps+dureeExt-dureeInt;) { Periode periodeInt(id_Periode, debutInt, dureeInt+debutInt); vectGeneralPeriode.push_back(periodeInt); pperiodeInt =& vectGeneralPeriode[id_Periode]; Pattern pattern0 (id_Pattern, pperiodeExt, pperiodeInt); vectGeneralPattern.push_back(pattern0); id_Pattern++; id_Periode++; debutInt+=PASDETEMPS; } dureeInt+=PASDETEMPS; } pasTemps+=PASDETEMPS; } dureeExt+=PASDETEMPS; }
Toute aide sera la bienvenue (même les remarques sur l'utilisation des pointeurs qui n'est peut-être pas la meilleure...)
Merci d'avance
Partager