Problème d'appel de méthode en c++

gwada style -  
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 !!!!

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
le compilateur prend cette ligne :
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.
2
gwada style
 
Slt Char Snipeur !
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é !
0
ydurce Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   18
 
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.
2
SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
 
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 :)
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
J'ai peur que tu aies envie de te les mordre ;-)
Qu'est-ce cette ligne dans le main ?
ORDI_PC new_pc(char *processeur1, char *modele_processeur1, char *modele_carte_mere1, char *ecran1);
Ah, sans doute un problème de copier-coller !
Bonne continuation
0