Accueil > Forum > > > > Creer objet avec classe heritée
Creer objet avec classe heritée
mercredi 20 mai 2009 à 15:26:52 |
Creer objet avec classe heritée

jonas03
|
Bonjour à tous, Voici mon problème : j'ai une classe personne et 2 classe dérivées interne et externe mais je veut créer dans mon main une personne mais je ne sais pas encore de quel type elle appartient : Dans le main : switch(Option) { case 1 : pEle = new personne; //Impossible de créer (normal il y a une méthode abstraite ...) pEle->Saisir(); //Dans cette méthode je choisi le type de personne Entreprise.Ajouter(pEle); break; Differentes classes : class personne { protected: char Nom[10+1]; char Prenom[10+1]; char Matricule[10+1]; int prix; int Fax; public: personne(char*No="", char*Pre="", char *Mat=""); void Affiche(); void Saisir(); virtual int GetSalaire() const = 0; personne*pSuivant; // pointeur vers l'objet suivant class Externe : public personne { public: Externe(int p) {Fax = p;} int GetSalaire() const { int sal = 2500; return sal; } protected: int Fax; }; class Interne : public personne { public: Interne(int p) {prix = p;} int GetSalaire() const { int sal = 1200; return sal; } protected: int prix; };
|
|
mercredi 20 mai 2009 à 16:05:35 |
Re : Creer objet avec classe heritée

CptPingu
|
Ce n'est pas possible. Ton code est mal pensé. Je te conseil le design pattern Factory qui répondra à ton problème. En gros, il te faut une méthode qui retourne une instanciation de la bonne classe.
Petite exemple: Personne* choice(int i) { switch(i) { case 1: return new Interne; case 2: return new Externe; } }
pEle = choice(1 ou 2, etc...);
De plus, évite les char truc[]; au profit de std::string truc;
|
|
mercredi 20 mai 2009 à 19:15:13 |
Re : Creer objet avec classe heritée

jonas03
|
J'ai deja fait ça dans la methode saisir mais il faudrait que je mette ce code ailleur mais je ne voit pas ou le code : void personne::Saisir() { int choix; personne*pEle;
cout<<"\n\n\tVous etes externe a l'entreprise, taper 1"; cout<<"\n\tVous etes interne a l'entreprise, taper 2"; cout<<"\n\nVotre choix : "; cin>>choix;
switch(choix) { case 1: cout<<"\nFax : "; cin>>Fax; pEle = new Externe(Fax); break;
case 2: cout<< "\nMatricule :"; cin>>prix; pEle = new Interne(prix); break;
default : cout<<"\nFax : "; cin>>Fax; pEle = new Externe(Fax); break; }
|
|
jeudi 21 mai 2009 à 01:01:35 |
Re : Creer objet avec classe heritée

CptPingu
|
C'est pas compliqué, la méthode saisir() doit être en dehors de la classe Personne, ou en statique.
Pour le cas statique, ton main donnerais ceci: Dans le main : personne* pEle; pEle = personne::Saisir(); Entreprise.Ajouter(pEle);
|
|
jeudi 21 mai 2009 à 13:58:59 |
Re : Creer objet avec classe heritée

jonas03
|
J'ai déclaré la méthode Saisir() en statique comme ceci : Dans la classe personne : static void Saisir(); et la méthode : static void Saisir() {...}
Et j'ai mis le code du main que tu ma donné. Mais j'ai une erreur : error: void value not ignored as it ought to be Les propriétés Nom, Prénom,... ne sont pas reconnus il faut que je les déclarent public ou bien que je les re-déclare dans la méthode saisir()?
|
|
jeudi 21 mai 2009 à 14:09:04 |
Re : Creer objet avec classe heritée

CptPingu
|
C'est normal, une méthode statique ne peut accéder aux attributs d'une classe, vu qu'elle n'est relié à aucune instance de classe. La méthode saisir n'a de toute façon pas besoin de toucher aux attributs privées.
Ton premier problème reste que ton code est mal pensé.
Si tu veux créer une personne, alors le mieux est de créer celle-ci et ses attributs en même temps. Pour cela, une des solutions possibles:
class Interne : public Personne { public: Interne (int p, char*No="", char*Pre="", char *Mat="") : Personne(No, Pre, Mat), prix(p) { } protected: int prix; };
void Saisir() { int choix; personne*pEle;
cout<<"\n\n\tVous etes externe a l'entreprise, taper 1"; cout<<"\n\tVous etes interne a l'entreprise, taper 2"; cout<<"\n\nVotre choix : "; cin>>choix;
switch(choix) { case 1: cout<<"\nFax : "; cin>>Fax; pEle = new Interne( Fax, "nom", "prenom", "mat"); break;
[...] }
|
|
jeudi 21 mai 2009 à 14:32:22 |
Re : Creer objet avec classe heritée

jonas03
|
J'ai mis en place ton code mais j'ai encore l'erreur concernant les propriétés protected car elles sont utilisées quand je crée un new Interne par exemple : pEle = new Interne( Fax, "nom", "prenom", "mat"); Je doit egalement modifier mon constructeur mais je ne sais pas s'il faut que je mette les deux propriétés (prix et fax)? Il est comme ceci pour l'instant : Eleve::Eleve(char *No, char *Pre, char *Mat) Merci d'avance.
|
|
jeudi 21 mai 2009 à 14:35:09 |
Re : Creer objet avec classe heritée

CptPingu
|
Je ne sais pas. Je ne peux pas deviner ce qui ne peut l'être. Qu'est-ce que "Eleve" ?
|
|
jeudi 21 mai 2009 à 14:44:20 |
Re : Creer objet avec classe heritée

jonas03
|
Eleve est une classe : class Eleve { protected: char Nom[10+1]; char Prenom[10+1]; char Matricule[10+1]; int prix; int Fax;
public: Eleve(char*No="", char*Pre="", char *Mat="");
void Affiche(); void Saisir(); virtual int GetSalaire() const = 0; }
|
|
jeudi 21 mai 2009 à 14:45:00 |
Re : Creer objet avec classe heritée

jonas03
|
Eleve est personne est la meme classe je l'ai changé de nom
|
|
Cette discussion est classée dans : public, int, classe, char, sal
Répondre à ce message
Sujets en rapport avec ce message
Erreur lors d'un ajout de classe [ par bedrohung ]
Bonsoir, je débute sur le C++ et je travaille sur un projet d'envoie de SMS via un modem GSM. J'utilise une classe liaison série pour communiquer avec
aide code mot anagramme [ par sahbibenayed ]
bonjour;je travaille sur borland C++;je souhaite coder un programme permattant de scanner une chaine de caractere, puis afficher dans chaque ligne les
visu d'une structure [ par toni93330 ]
Bonjour,Voila mon problème :j'utilise visual studio 2005 et le framework .NET. Dans mon programme principale j'inclus un fichier de définition qui con
Liste chainée [ par popoff971 ]
Bonjour,Dans le cadre d'un TP en info je dois créer un réseau de ligne de métro.je me suis mis en tete d'utiliser les liste chainée pour cela mais je
un pti prob ... :s help [ par meksoft002 ]
Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "pe
pointeur de char [ par hacker_mt ]
Salut tout le monde voici mon code :#include #include void rajout(char ip[15], char *cmd){ int i, j; for(i=0;i
Modification d'un crytage d'hostname sur unrealircd3.2.7 [ par Loveurs ]
Bonsoir,J'aimerai savoir si quelqu'un serrai comment modifier le crytage d'host de unreal de façon à faire crytage.wanadoo.fr pour les ip résolues, es
Erreur C4430 (besoin d'aide) [ par lui88 ]
Bonjour , une erreur est apparu dans mon code error c4430:spécificateur de type manquant - int est pris en compte par défaut.remarque: C++ ne prend pa
AIDE [ par alex64100 ]
BOJOUR je dois coder un correcteUr d'orthographe mon code est truffé d'erreurs, j'ai du mal à les corriger svp aidez-moi #include #include #inclu
developpement [ par erickoua ]
bonjourj'ai utiliser la fonction _stricmp sur linux et a la compilation cette fonction n'est pas definie, voici le bout du programme:static inline int
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|