Problème d'appel de méthode en c++
gwada style
-
ydurce Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
ydurce Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai développé un code en C++ qui permet à l'utilisateur de saisir des infos sur la config d'un PC. Mon problème vient de l'appel d'une méthode qui permet l'affichage de l'objet.
J'utilise DEV C++ 4.9.9.2
Voici mon code :
#include<cstdlib>
#include<iostream>
using namespace std;
//Déclaration de la classe ORDI_PC
class ORDI_PC
{
int nbr_slot_mem;
int nbr_slot_extension;
int nbr_prise_usb;
int type_usb;
char clavier_souris[3];
char type_clavier_souris[15];
static int nombre;
char wifi[5];
char type_bus[15];
char processeur[6];
char modele_processeur[15];
char modele_carte_mere[15];
char type_DD[5];
int taille_DD;
char ecran[5];
char carte_graphique[5];
public:
//Constructeur
ORDI_PC(char *processeur, char *modele_processeur, char *modele_carte_mere, char *ecran);
//Implémentation des méthodes
void affichage_config();
};
//Implémentation du constructeur
ORDI_PC::ORDI_PC(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1)
{
strcpy(processeur, processeur1);
strcpy(modele_processeur, modele_processeur1);
strcpy(modele_carte_mere, modele_carte_mere1);
strcpy(ecran, ecran1);
}
//Implémentation des méthodes
void ORDI_PC::affichage_config()
{
cout<<"Processeur : "<<processeur<<"\n";
cout<<"Modele processeur : "<<modele_processeur<<"\n";
cout<<"Modele carte mere : "<<modele_carte_mere<<"\n";
cout<<"Ecran : "<<ecran<<"\n";
}
int main(int argc, char *argv[])
{
char processeur1[6];
char modele_processeur1[15];
char modele_carte_mere1[15];
char ecran1[5];
//Instanciation d'un PC
cout<<"Processeur : ";
cin>>processeur1;
cout<<"Modele processeur : ";
cin>>modele_processeur1;
cout<<"Modele carte mere : ";
cin>>modele_carte_mere1;
cout<<"Ecran : ";
cin>>ecran1;
ORDI_PC new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);
new_pc.affichage_config();
system("pause");
return 0;
}
A la compilation, j'ai le message d'erreur suivant :
request for member 'affichage_config' in 'new_pc', which is of non-class type 'ORDI_PC() (char *, char *, char *, char *)'
ça fait des heures que je penche sur le problème mais je ne trouve pas la solution.
Si quelqu'un peut m'aider !!!!
J'ai développé un code en C++ qui permet à l'utilisateur de saisir des infos sur la config d'un PC. Mon problème vient de l'appel d'une méthode qui permet l'affichage de l'objet.
J'utilise DEV C++ 4.9.9.2
Voici mon code :
#include<cstdlib>
#include<iostream>
using namespace std;
//Déclaration de la classe ORDI_PC
class ORDI_PC
{
int nbr_slot_mem;
int nbr_slot_extension;
int nbr_prise_usb;
int type_usb;
char clavier_souris[3];
char type_clavier_souris[15];
static int nombre;
char wifi[5];
char type_bus[15];
char processeur[6];
char modele_processeur[15];
char modele_carte_mere[15];
char type_DD[5];
int taille_DD;
char ecran[5];
char carte_graphique[5];
public:
//Constructeur
ORDI_PC(char *processeur, char *modele_processeur, char *modele_carte_mere, char *ecran);
//Implémentation des méthodes
void affichage_config();
};
//Implémentation du constructeur
ORDI_PC::ORDI_PC(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1)
{
strcpy(processeur, processeur1);
strcpy(modele_processeur, modele_processeur1);
strcpy(modele_carte_mere, modele_carte_mere1);
strcpy(ecran, ecran1);
}
//Implémentation des méthodes
void ORDI_PC::affichage_config()
{
cout<<"Processeur : "<<processeur<<"\n";
cout<<"Modele processeur : "<<modele_processeur<<"\n";
cout<<"Modele carte mere : "<<modele_carte_mere<<"\n";
cout<<"Ecran : "<<ecran<<"\n";
}
int main(int argc, char *argv[])
{
char processeur1[6];
char modele_processeur1[15];
char modele_carte_mere1[15];
char ecran1[5];
//Instanciation d'un PC
cout<<"Processeur : ";
cin>>processeur1;
cout<<"Modele processeur : ";
cin>>modele_processeur1;
cout<<"Modele carte mere : ";
cin>>modele_carte_mere1;
cout<<"Ecran : ";
cin>>ecran1;
ORDI_PC new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);
new_pc.affichage_config();
system("pause");
return 0;
}
A la compilation, j'ai le message d'erreur suivant :
request for member 'affichage_config' in 'new_pc', which is of non-class type 'ORDI_PC() (char *, char *, char *, char *)'
ça fait des heures que je penche sur le problème mais je ne trouve pas la solution.
Si quelqu'un peut m'aider !!!!
A voir également:
- Problème d'appel de méthode en c++
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Appel privé - Guide
- Double appel - Guide
- Je peux appeler mais pas recevoir d'appel sur mon portable - Forum Téléphones & tablettes Android
- Comment reecouter un appel sur iphone - Forum Huawei
4 réponses
le compilateur prend cette ligne :
J'avoue que c'est un peu obscure pour moi comme erreur, mais en virant les char*, ça fonctionne, ou en les mettant entre parenthèses.
Le cast que tu cherchait à faire est surement mal fait, du coup il interprete comme une fonction.
ORDI_PC new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);pour une déclaration de fonction !
J'avoue que c'est un peu obscure pour moi comme erreur, mais en virant les char*, ça fonctionne, ou en les mettant entre parenthèses.
Le cast que tu cherchait à faire est surement mal fait, du coup il interprete comme une fonction.
je pense que tu veux instancier un objet ORDI_PC .
Donc c'est OK mais il ne faut pas redéclarer les types char *.
juste faire:
ORDI_PC new_pc(processeur1, modele_processeur1, modele_carte_mere1, ecran1);
Là, tu appelles ton constructeur pour créer ton nouvel object new_pc.
Donc c'est OK mais il ne faut pas redéclarer les types char *.
juste faire:
ORDI_PC new_pc(processeur1, modele_processeur1, modele_carte_mere1, ecran1);
Là, tu appelles ton constructeur pour créer ton nouvel object new_pc.
Salut
pour implémenter ta fonction, la syntaxe serait plutôt :
ORDI_PC::new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);
tu as juste oublié les "::" entre le nom de ta classe et le nom de ta fonction :)
pour implémenter ta fonction, la syntaxe serait plutôt :
ORDI_PC::new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);
tu as juste oublié les "::" entre le nom de ta classe et le nom de ta fonction :)
Je te remercie pour ta réponse. Tu as raison, il semblerait qu'il ai pris cette ligne pour une déclaration de fonction. J'ai fait la modification et ça fonctionne.
Merci encore ! tu m'as sauvé !