Aider moi a résoudre ce petit bugg en c++!!

napi15 Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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 ;
};

2 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
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.
1
Profil bloqué
 
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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 :
Employe *p;
p=new cadre();
p->gain();// fonctionnera et appelera Cadre::gain()
0