Bonjour ... je voudrais savoir pourquoi ce code :

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
 
int main () {
  cout << "On cree les personnes suivantes\n";
  const char* prenoms1[] = {"Marcel", "Firmin", "Gaston", 0};
  const Personne marcel ("Meharcele",  prenoms1, 78);
  Afficher (marcel);
 
  const char* prenoms2[] = {"Lea", "Germaine", 0};
  const Personne lea ("Tralala",  prenoms2, 45);
  Afficher (lea);
 
  // et si vous aviez raté quelque chose sur le constructeur
  prenoms1[0] = "Claudia"; prenoms1[1] = 0;
  Personne claudia ("Choufleur",  prenoms1, 31);
  Afficher (claudia);
l'entete de la classe Personne :
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
 
class Personne {
 
public :
Personne(const char* ,const char** ,int );
const char* Nom() const;
const char* PremierPrenom() const ;
const char** TousLesPrenoms() const ;
int Age() const ;
 
private :
const char* nom ;
const char** prenoms;
int age ;
 
};
avec ce constructeur dans la classe personne :
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
 
Personne::Personne(char* leNom , const char** lesPrenoms , int lage) {
 
 
nom = strdup(leNom) ;
 
int i=0;
while(lesPrenoms[i] != 0) { i++;}
 
int j=0;
while (j != i) { 
prenoms[j] = strdup(lesPrenoms[j]) ;;
j++;
}
prenoms[j]=0;
 
age = lage ;
 
}
provoque cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
On cree les personnes suivantes
 Firmin (Firmin, Gaston) Meharcele, 78 ans
 Germaine (Germaine) Tralala, 45 ans
Erreur de segmentation (core dumped)
Merci d'avance