Probleme sur une classe

NerOcrO Messages postés 33 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 27 mai 2004 - 27 avril 2002 à 21:02
NerOcrO Messages postés 33 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 27 mai 2004 - 2 mai 2002 à 00:25
Voici mon code :
#include
#include <string.h>
class Chanson //classe Chanson
{
public:
int Duree;
char TypeDeFichier[3], Auteur[50], Titre[50], Interprete[50];
public:
Chanson (int*, char*, char*, char*, char*); //Constructeur
~Chanson (void); //Destructeur
void Afficher ();
};

void main (void)
{
int Duree1;
char TypeDeFichier1[3], Auteur1[50], Titre1[50], Interprete1[50];
Chanson obj (Duree1, TypeDeFichier1, Auteur1, Titre1, Interprete1);
obj.Afficher ();
}

void Chanson::Afficher (void)
{
cout << "Type De Fichier : " << TypeDeFichier << endl;
cout << "Duree : " << Duree << endl;
cout << "Auteur : " << Auteur << endl;
cout << "Titre : " << Titre << endl;
cout << "Interprete : " << Interprete << endl;
}

Chanson::Chanson (int* Duree1, char* TypeDeFichier1, char* Auteur1, char* Titre1, char* Interprete1)
{
Duree=*Duree1;
strcpy (TypeDeFichier, TypeDeFichier1);
strcpy (Auteur, Auteur1);
strcpy (Titre, Titre1);
strcpy (Interprete, Interprete1);
}

Chanson::~Chanson (void)
{
cout << "Objet detruit.";
}
J'ai une erreur au niveau de l'instanciation.
Aidez moi svp.

2 réponses

Blustuff Messages postés 20 Date d'inscription jeudi 7 mars 2002 Statut Membre Dernière intervention 27 juin 2007
2 mai 2002 à 00:16
Ton constructeur utilise comme premier parametre un pointeur sur int, et toi, tu as passé un parametre du type int. Tu dois remplacer

Chanson obj (Duree1, TypeDeFichier1, Auteur1, Titre1, Interprete1);

par

Chanson obj (&Duree1, TypeDeFichier1, Auteur1, Titre1, Interprete1);

puisque ce parametre est un pointeur, tu dois envoyer l'adresse de Duree1 et non sa valeur. Par ailleur l'usage de pointeur n'est pas justifié ici. Ton constrtucteur ne modifie pas la valeur de Duree, tu n'a donc pas besoin de passer la variable par pointeur. Tu peux donc remplacer

Duree=*Duree1;

par

Duree=Duree1;

et changer le type du premier parametre

int*

par le type

int

Si ca ne marche pas, donne plus de précision dans la description de l'erreur. Il peut y avoir bcp d'erreur dans l'instanciation. (Au moins préciser, si c'est une erreur de compilation, de liason, ou une exeption lors de l'execution)

Blustuff.
0
NerOcrO Messages postés 33 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 27 mai 2004
2 mai 2002 à 00:25
Put1 je te remercie, c'était exactement ça.

NerOcrO
0
Rejoignez-nous