Bonjour tout le monde,
Je fais des petits exos pour mettre à niveau et je bloque un peu la.
Lors de la libération de la mémoire dans le destructeur, le programme me renvoit un code erreur.
Si vous avez une idée.
Voila la classe :
class adherent
{
char * nom;
char * prenom;
char * adresse;
int age;
public:
adherent(char *,char *, char *, int);
adherent(const adherent &);
~adherent();
};
Voici mes constructeurs et destructeurs :
adherent::adherent(char * name, char * prename, char * adr, int old)
{
int longueur,i;
longueur = strlen(name)+1;
nom = new char(longueur);
strcpy(nom,name);
longueur = strlen(prename)+1;
prenom = new char(longueur);
strcpy(prenom,prename);
longueur = strlen(adr)+1;
adresse = new char(longueur);
strcpy(adresse,adr);
age=old;
}
// constructeur par recopie
adherent::adherent(const adherent & a)
{
int i,longueur;
longueur = strlen(a.nom)+1;
nom = new char[longueur];
for(i=0;i<longueur;i++)
{
nom[i]=a.nom[i];
}
longueur = strlen(a.prenom)+1;
prenom = new char[longueur];
for(i=0;i<longueur;i++)
{
prenom[i]=a.prenom[i];
}
longueur = strlen(a.adresse)+1;
adresse = new char[longueur];
for(i=0;i<longueur;i++)
{
adresse[i]=a.adresse[i];
}
age= a.age;
}
adherent::~adherent()
{
// delete [] nom; retourne un code erreur lorsque j'instancie 2 adherents
delete [] prenom;
delete [] adresse;
}
Voici le main :
int main()
{
adherent oliv("loks","olivier","1 rue de l'église",26);
adherent vincent("lutun","vincent","5 rue de l'église",26);
return 0;
}
Vous voyez une erreur?
PS : la prochaine j'utiliserais std::string mais j'aimerais comprendre mon erreur aussi :)
Merci, pour votre aide 