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

Fermé
gwada style - Modifié par gwada style le 5/11/2010 à 12:46
ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 - 5 nov. 2010 à 23:25
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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
5 nov. 2010 à 14:00
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
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 samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 18
5 nov. 2010 à 23:25
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 mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
5 nov. 2010 à 13:35
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
5 nov. 2010 à 13:38
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