problème lecture Deque de pointeurs sur objet
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:
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:
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!