Class en c++ [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
14 septembre 2005
-
Char Snipeur
Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
-
bonjour j'avais un poste assez similaire mais pas avec la fonction class;

Voila j'aimerais saisir des infos sur mon ordinateur du type:marque taille ecran...,et les ranger dans une class a.ordinateur mais voila je ne comprend pas du tout comment je doit faire j'ai ecris un code que voila:
#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

class ordinateur {public:
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;

void saisie();
void affichage();
};
ordinateur a;
int main ()

{

a.saisie();
a.affichage();

return 0;
}
void affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<a.marque<<endl;
cout<<a.model<<endl;
cout<<a.proscesseur;
cout<<a.ram<<endl;
cout<<a.dd<<endl;
cout<<a.ecran<<endl;
cout<<a.taille<<endl;

}

void saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> a.marque;
cout<<endl<<"le model:"<<endl;
cin>>a.model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>a.proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>a.ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>a.dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>a.ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>a.taille;

}


NE PAS TENIR COMPTE DES INCLUDE!

quand je compile j'ai une erreur :

/usr/bin/ld: Undefined symbols:
ordinateur::saisie()
ordinateur::affichage()
collect2: ld returned 1 exit status

enfin bon j'essaye de comprendre les class et je n'avancepas.

4 réponses

Messages postés
9
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
14 septembre 2005

bon dite moi si j'ai faux dans ma demarche:

on crée une class:

class nom_de_la_class(public: element de la class;..;...;
public:
fonctions_membres de la class()
{
elements de la fonction
}
);

definition d'un element de la class:
nom_de_la_class element;

fonction main()
{
appel d'une fonction membre:
element.fonction_membre();
}

est-ce que ma methode ce tiens ou non est-ce que je dois revoir ma copie
???
merci pour vos futur reponses
Messages postés
488
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
15 mars 2009
156
1 / où est le prototype ?

2/ où sont déclarées les instances de model, ram, ecran, dd, taille ?

3/ quel est l'intérêt à faire hériter une classe des propriétés
de simples variables (int char float) n'étant pas des objets
mais des types intégrés au langage ?

4/ même en admetant que ce soient des objets, un objet n'hérite pas d'instances mais de types

5/ qu'est-ce qu'un type et qu'est ce qu'une instance ?

int a;


int est le type de variable, et a est un instance de type integer

class déclare un type d'objet

de toute évidence, il faut que tu apprennes ce que sont

- le type
- l'instance
afin de pouvoir comprendre
- l'encapsulation
qui est la première des 3 étapes pour comprendre l'objet.
Messages postés
9
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
14 septembre 2005

merci pour ta reponse
je me replonge dans mon bouquin pour essayé de bien saisir ce qu'est un objet car la je rame.
lorque je serai un peu plus pres je referais surface.
Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
1 125
je te propose:
class ordinateur {
char marque[10];char model[10];float proscesseur;int ram;int dd;char ecran[10];int taille;
public:
void saisie();
void affichage();
};
ordinateur a;
int main ()

{

a.saisie();
a.affichage();

return 0;
}
void ordinateur::affichage()
{
cout<<"les informations saisie sont: "<<endl;
cout<<marque<<endl;// lignes modifier : plus de "a."
cout<<model<<endl;
cout<<proscesseur;
cout<<ram<<endl;
cout<<dd<<endl;
cout<<ecran<<endl;
cout<<taille<<endl;

}

void ordinateur::saisie()
{
cout<<"Quel est la marque de l'ordinateur: "<<endl;
cin>> marque;// lignes modifier : plus de "a."
cout<<endl<<"le model:"<<endl;
cin>>model;
cout<<endl<<"la vitesses du proscesseur:"<<endl;
cin>>proscesseur;
cout<<endl<<"quel est la taille de votre memoire vive en MO:"<<endl;
cin>>ram;
cout<<endl<<"la taille de votre disque dur en GO:"<<endl;
cin>>dd;
cout<<endl<<"la marque de votre ecran:"<<endl;
cin>>ecran;
cout<<endl<<"et ca taille en pouce:"<<endl;
cin>>taille;

}

voila comment je corrige ton programme. J'ai déplacer le public pour qu'on ne puisse pas acceder directement aux donnés.
l'implementation d'une méthode se fait en précisant la portée car si tu as :
class A{void saisie();...}
et class B{void saisie();...}
comment le compilo fait pour savoir à qui corespond l'implémentation
void saisie(){...} ?
yoshis94
Messages postés
9
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
14 septembre 2005

merci pour ta reponse :-)!

mais lorsque que je compile j'obtiens bien la premiere partie saisie mais apres je n'arrive pas a obtenir le réaffichage des informations saisie.

je vais etudier ca encore merci!
Char Snipeur
Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
1 125 > yoshis94
Messages postés
9
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
14 septembre 2005

Ce que je fait dans ce cas la, pour débugger, c'est de tout mettre en public. Comme ça, tu peux faire un cout<<a.X et vérifier que c'est bien la bonne valeur qui a été prise.rajoute éventuellement de cout dans la fonction saisie.
Une idée, tu peux aussi surcharger l'opérateur '<<' pour pouvoir faire directement : cout<<a
ce qui permet d'avoir quelque chose de plus utilisable pour quelqu'un qui utiliserai ta classe., de te familiariser avec la notion de fonction amie, et de flux.
ostream& operator<<(ostream&, ordinateur);
bonne chance pour la suite de ton prog.