Aider moi a résoudre ce petit bugg en c++!!
napi15
Messages postés
78
Statut
Membre
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour,
Aider moi a trouver l'erreur!! donc j'ai declarer une class abstraite employee ! et une class cadre (heriter de employer) comment faire fonctionner les fonctions de la class mere employee?!? la fonction gain et la fonction augmenterdans Main!!! ?!?!?!
Voiciie le programme!! (
class Employee {
protected:
string nom;
string prenon ;
public:
//Get & Set Prenon
void setNom( string name ) { nom= name;}
void setPrenon(string pre ) { prenon= pre;}
string getNom () { return nom ; }
string getPrenon () { return prenon ; }
virtual double gain () =0; <====la fonction qui veut pas fonctionner!
virtual double augmenter (double pourcentage ) =0;
};
//Class Cadre
class Cadre :public Employee {
public :
Cadre ( double Salair=0 ) : salairAnnuelle(Salair){}
void setSalair( double sal ) { salairAnnuelle=sal;}
double getSalair () { return salairAnnuelle ; }
virtual double gain() { return (salairAnnuelle/12); }
virtual double augmenter (double pourcentage) {return(salairAnnuelle*pourcentage); }
protected :
double salairAnnuelle ;
};
Aider moi a trouver l'erreur!! donc j'ai declarer une class abstraite employee ! et une class cadre (heriter de employer) comment faire fonctionner les fonctions de la class mere employee?!? la fonction gain et la fonction augmenterdans Main!!! ?!?!?!
Voiciie le programme!! (
class Employee {
protected:
string nom;
string prenon ;
public:
//Get & Set Prenon
void setNom( string name ) { nom= name;}
void setPrenon(string pre ) { prenon= pre;}
string getNom () { return nom ; }
string getPrenon () { return prenon ; }
virtual double gain () =0; <====la fonction qui veut pas fonctionner!
virtual double augmenter (double pourcentage ) =0;
};
//Class Cadre
class Cadre :public Employee {
public :
Cadre ( double Salair=0 ) : salairAnnuelle(Salair){}
void setSalair( double sal ) { salairAnnuelle=sal;}
double getSalair () { return salairAnnuelle ; }
virtual double gain() { return (salairAnnuelle/12); }
virtual double augmenter (double pourcentage) {return(salairAnnuelle*pourcentage); }
protected :
double salairAnnuelle ;
};
A voir également:
- Aider moi a résoudre ce petit bugg en c++!!
- Petit 2 ✓ - Forum Bureautique
- Comment écrire mètre carré avec un m+2 expos? ✓ - Forum Windows
- Petit point vert snap ✓ - Forum Snapchat
- Comment imprimer une photo en petit - Forum Photo numérique
- Trier du plus petit au plus grand excel - Guide
2 réponses
Je ne comprends pas bien ton questionnement.
Une classe comprenant une méthode virtuelle pure est une classe abstraite, elle ne peut donc être instanciée. Elle doit donc être dérivée et ses méthodes virtuelles doivent donc être reprises dans la classe dérivée et en aucun cas il ne sera fait appel aux méthodes virtuelles de la classe mère.
Dans ton cas tu pourras appeler les méthodes 'gain' et 'augmenter' seulement à partir d'une instance de la classe 'Cadre'.
NB: il est inutile d'écrire virtual double gain(), double gain() suffit.
Bonne réflexion.
Une classe comprenant une méthode virtuelle pure est une classe abstraite, elle ne peut donc être instanciée. Elle doit donc être dérivée et ses méthodes virtuelles doivent donc être reprises dans la classe dérivée et en aucun cas il ne sera fait appel aux méthodes virtuelles de la classe mère.
Dans ton cas tu pourras appeler les méthodes 'gain' et 'augmenter' seulement à partir d'une instance de la classe 'Cadre'.
NB: il est inutile d'écrire virtual double gain(), double gain() suffit.
Bonne réflexion.
Pour complété la réponse de loupious, il est possible d'appeler gain depuis une variable Employé SI cette variable est un pointeur, c'est le polymorphisme. Mais ce pointeur se réfère forcément à un objet réel dérivé.
exemple :
exemple :
Employe *p; p=new cadre(); p->gain();// fonctionnera et appelera Cadre::gain()
https://forums.commentcamarche.net/forum/affich-19624613-probleme-cle-usb-qui-refuse-de-se-formater#p19625276