Bonjour à tous,
Je suis entrain de me battre avec l'utilisation de deque... Je vois pas ou je fais une erreur... lors de la relecture ça m'affiche uniquement le dernier éléments introduit (autant de fois qu'il y a d'éléments).
Voici ma classe Perso (j'utilise "DemanderPerso" pour le remplir et "AfficherPerso" pour l'affichage):
Voici mon main:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 #include<iostream> #include<fstream> #include<string.h> #include "Classe.h" using namespace std; unsigned long Perso::compteur=0l; Perso::Perso() //Contructeur { id=++compteur; pnom=new char [MAXLEN_NOM+1]; //alloue MAXLEN+1 à pnom memset (pnom, 0, MAXLEN_NOM+1); //Remplit les MAXLEN+1 cases de pnom avec des 0 sante=100; exp=0; classe=0; //pnext=pprev=NULL; } Perso::~Perso(void) //Destructeur { delete[]pnom; } Perso::Perso(Perso &source) { if(&source==this)return; pnom=new char [MAXLEN_NOM+1]; strcpy(pnom,source.pnom); exp=source.exp; compteur=source.compteur; sante=source.sante; classe=source.classe; } Perso& Perso::operator= (Perso& source) { if(&source == this) return(*this); strcpy(pnom,source.pnom); exp=source.exp; compteur=source.compteur; sante=source.sante; classe=source.classe; return(*this); } void Perso::AfficherPerso(Perso* aPerso) { cout<<"Nom: "<<pnom<<endl; cout<<"Experience: "<<exp<<endl; cout<<"ID: "<<id<<endl; cout<<"Sante: "<<sante<<endl; cout<<"Classe: "<<classe<<endl; cout<<"Force: "<<force<<endl; cout<<"Agilite: "<<agilite<<endl; cout<<"Intelligence: "<<intell<<endl; cout<<"----------------------------------------"<<endl; } void Perso::DemanderPerso(Perso* aPerso) { int buflen = aPerso->MAXLEN_NOM; cout<<"Creation"<<endl<<endl; cout<<"Nom:"; cin.ignore(); //vide le choix du menu, vide le buffer cin.getline(aPerso->pnom, buflen); aPerso->pnom[buflen+1]; cout<<"Entrez force: "; cin>>force; cout<<"Entrez agilite: "; cin>>agilite; cout<<"Entrez Intelligence: "; cin>>intell; }
Merci d'avance pour votre aide!
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 #include "Classe.h" #include <deque> using namespace std; void main () { Perso* ptrav=NULL; ptrav=new Perso; deque<Perso*> dpperso; //déclaration deque pointeur sur objet deque<Perso*>::iterator ipb; ptrav->DemanderPerso(ptrav); //remplir deque objet dpperso.push_back(ptrav); ptrav->DemanderPerso(ptrav); dpperso.push_back(ptrav); system("cls"); for(ipb = dpperso.begin(); ipb != dpperso.end(); ipb++) //affichage deque objet //pas OK { ptrav->AfficherPerso(*ipb); } cout<<"la deque a " <<dpperso.size()<<" elements"<<endl; system("pause"); }
Partager