Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "personne"
seulement là....quand je sort de ma fonction "créer"...le contenu du tableau s'efface....j'ai essayé à l'interieur de la fonction le tableau contient ce que je lui ai entré....
s'il vous plait si c'est un probleme de variable temporaire ....dites le moi et dites comment le contourner sans rendre la fonction amie

le prog:

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class Personne{
	char *nom;
	char *prenom;
	unsigned int age;
 
	public:
	Personne();
	Personne(char*,char*,unsigned int);
	Personne(Personne&);
	~Personne();
	void affichage();
	void modifier();
	void clonage (Personne &);
	Personne& operator=(Personne&);
	int operator==(Personne&);
	//friend void creer (Personne *tab,int n);
	//friend void afficher (Personne *tab);
	};
	Personne::Personne(){
		nom=NULL;
		prenom=NULL;
		age=0;
	}
 
	Personne::Personne(char *a,char *b,unsigned int c){
		nom=new char[20];
		strcpy(nom,a);
		prenom=new char[20];
		strcpy(prenom,b);
		age=c;
	}
 
	Personne::~Personne(){
		nom=NULL;
		prenom=NULL;
	}
 
	void Personne::affichage(){
		cout<<"\n------------------";
		cout<<"\nLe nom "<<nom<<"\nLe prenom "<<prenom<<"\nL'age "<<age;
		cout<<"\n------------------";
	}
 
	Personne::Personne(Personne&p){
		clonage(p);
	}
 
	void Personne::modifier(){
	int c;
	char *chaine;
	int age2;
	cout<<"\nQuoi changer\n<1>. nom\n<2>. prenom\n<3>. age\n";
	cin>>c;
	switch(c){
		case 1:cout<<"\nVeuillez entrer la nouvelle chaine...";
				cin>>chaine;
				strcpy(nom,chaine);
				break;
		case 2:cout<<"\nVeuillez entrer la nouvelle chaine ...";
				cin>>chaine;
				strcpy(prenom,chaine);
				break;
		case 3:cout<<"\nVeuillez entrer la nouvelle valeur ...";
				cin>>age2;
				age=age2;
				break;
	}
	}
 
	Personne& Personne::operator=(Personne& p){
		if(this!=&p){
			delete nom;
			delete prenom;
			nom=new char[20];
			prenom=new char[20];
			clonage(p);
 
		}
		return *this;
 
 
	}
 
	int Personne::operator==(Personne& p){
		if(!strcmp(nom,p.nom) && !strcmp(prenom,p.prenom) && age==p.age) return 1;
		return 0;
	}
 
	void Personne::clonage(Personne &p){
	strcpy(prenom,p.prenom);
	strcpy(nom,p.nom);
	age=p.age;
	}
 
	void creer(Personne *tab,int n){
		tab=new Personne[n];
		char *chaine1=new char[20];
		char *chaine2=new char[20];
		int c;
		for(int i=0;i<=n;i++)
			{cout <<"\nNom :  ";cin>>chaine1;
			cout <<"\nPrenom :  ";cin>>chaine2;
			cout <<"\nAge :  ";cin>>c;
			(*(tab+i))=Personne (chaine1,chaine2,c);
 
			}
			//tab[0].affichage();---->sa marche bien
	}
 
 
	void afficher(Personne *tab,int n){
		for(int i=0;i<=n;i++){
			(*(tab+i)).affichage();
		}
	}
 
 
	void main(){
	clrscr();
 
		Personne p1("tow" , "tiw" , 20 );
		Personne p2("gj,","hic",41);
		p1.affichage();
		p2.affichage();
		p2.modifier();
		p2.affichage();
		p2=p1;
		p2.affichage();
		/*********************************************/
		int n=2;
		Personne *tab;
		creer(tab,n);
		(*tab).affichage();
		//tab[0].affichage();---->sa ne donne rien :s
		getch();
		afficher(tab,n);
		/*********************************************/
		getch();
	}