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):
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;
 
}
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
#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");
 
}
Merci d'avance pour votre aide!