Probleme relative a C++
jwihida
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour tout le monde,
S'il vous plais j'ai créée une classe personne ayant comme constructeurs
personne::personne(char* n,char* p,int a)
{
nom = new char[strlen(n)+1];
strcpy(nom,n);
prenom = new char[strlen(p)+1];
strcpy(prenom,p);
age = a;
}
personne::personne(personne & p)
{
nom = new char[strlen(p.nom)+1];
strcpy(nom,p.nom);
prenom = new char[strlen(p.prenom)+1];
strcpy(prenom,p.prenom);
age = p.age;
}
sachant que j'ai défini des valeurs par défaut pour le constructeur.
Qaunt je crée un tableau de personne de maniére statique tout va bien mais le probleme s'impose dans la classa main quant j'essaye de créer le tableau dynamiquement comme cela :
int nombre_pers;
char* n;
char* p;
int a ;
personne* tab_pers ;
cout<<"Entrez le nombre de personnes à stocker : ";
cin>>nombre_pers;
tab_pers = new personne[nombre_pers];
for(unsigned int i=0;i<3;i++)
{
cout<<"-----------------------------"<<endl;
tab_pers[i] = new personne();
cout<<"NOM :";
cin>>n;
cout<<"PRENOM :";
cin>>p;
cout<<"AGE :" ;
cin>>a;
tab_pers[i]->setNom(n);
tab_pers[i]->setPrenom(p);
tab_pers[i]->setAge(a);
}
il ne marche pas ,génère des erreurs de compilation :
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
......
s'il vous plait j'ai besoin de votre aide ):
Merci d'avance.
S'il vous plais j'ai créée une classe personne ayant comme constructeurs
personne::personne(char* n,char* p,int a)
{
nom = new char[strlen(n)+1];
strcpy(nom,n);
prenom = new char[strlen(p)+1];
strcpy(prenom,p);
age = a;
}
personne::personne(personne & p)
{
nom = new char[strlen(p.nom)+1];
strcpy(nom,p.nom);
prenom = new char[strlen(p.prenom)+1];
strcpy(prenom,p.prenom);
age = p.age;
}
sachant que j'ai défini des valeurs par défaut pour le constructeur.
Qaunt je crée un tableau de personne de maniére statique tout va bien mais le probleme s'impose dans la classa main quant j'essaye de créer le tableau dynamiquement comme cela :
int nombre_pers;
char* n;
char* p;
int a ;
personne* tab_pers ;
cout<<"Entrez le nombre de personnes à stocker : ";
cin>>nombre_pers;
tab_pers = new personne[nombre_pers];
for(unsigned int i=0;i<3;i++)
{
cout<<"-----------------------------"<<endl;
tab_pers[i] = new personne();
cout<<"NOM :";
cin>>n;
cout<<"PRENOM :";
cin>>p;
cout<<"AGE :" ;
cin>>a;
tab_pers[i]->setNom(n);
tab_pers[i]->setPrenom(p);
tab_pers[i]->setAge(a);
}
il ne marche pas ,génère des erreurs de compilation :
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
no match for 'operator=' in '*((+(i * 12u)) + tab_pers) = (((personne*)operator new(12u)), (<anonymous>->personne::personne(((char*)((const char*)"")), ((char*)((const char*)"")), 0), <anonymous>))'
......
s'il vous plait j'ai besoin de votre aide ):
Merci d'avance.
A voir également:
- Probleme relative a C++
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
- Valeur relative et absolue ✓ - Forum VB / VBA
- Comment écrire formule avec valeur relative - Forum Programmation
- Relation d'approbation - Forum Windows 10
- Relation d'approbation et un seul domaine - Forum Logiciels
tout D'abord je vous remercie de prendre de votre temps pour me répondre.
Et bon oui vous avez raison mais le problème même si je l'élimine et je procède comme suit :
for(unsigned int i=0;i<3;i++)
{
cout<<"-----------------------------"<<endl;
// tab_pers[i] = new personne();
cout<<"NOM :";
cin>>n;
cout<<"PRENOM :";
cin>>p;
cout<<"AGE :" ;
cin>>a;
tab_pers[i].setNom(n);
tab_pers[i].setPrenom(p);
tab_pers[i].setAge(a);
}
for(unsigned int i=0;i<3;i++)
{
cout<<"********************************"<<endl;
tab_pers[i].Afficher();
}
je rencontre un grand debogage lors de l'execution une fois j'entre le premier nom et je tappe sur ENTER :==> une boite de dialogue indiquant le debog apparait .
Je sais que c'est un probléme de pionteur mais j'arrive pas à le localiser .
M
Un conseil, comme tu fais du C++, laisse tomber les char* et utilise la classe standard "string". Cette classe gère les chaines de caractères, ce qui fait qu'il n'y a plus besoin de s'occuper de l'allocation mémoire.
interet : code plus compact, plus lisible, plus robuste
inconvénient : presque trop facile ;-)