Appel d´une fonction de classe dérivée depuis la mère.
Bonjour,
Cela fait plusieurs jours que je fais face à un petit problème : j´ai une classe mère d´où plusieurs classes tirent leur héritage.
J´appelle une fonction de la classe mère qui n´est redéfinie dans aucune classe fille. De cette fonction, j´aurai besoin d´en appeler une qui se situe :
- soit dans la classe mère pour la quasi-totalité des instances des classes filles
- dans une des classe fille (pour les objets d´une seule classe fille).
Ouh là, je sens que je ne suis pas claire. Voici un exemple expurgé, contenant deux classes :
- classe maitre :
maitre.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #ifndef MAITRE_H
#define MAITRE_H
#include <iostream>
class maitre
{
public:
maitre();
virtual ~maitre();
void A();
void B();
protected:
private:
}; |
maitre.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include "maitre.h"
maitre::maitre()
{
//ctor
}
maitre::~maitre()
{
//dtor
}
void maitre::A()
{
B();
}
void maitre::B()
{
printf("perdu\n");
} |
- classe fils :
fils.h :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #ifndef FILS_H
#define FILS_H
#include "maitre.h"
class fils : public maitre
{
public:
fils();
virtual ~fils();
void B();
protected:
private:
};
#endif // FILS_H |
fils.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include "fils.h"
fils::fils()
{
//ctor
}
fils::~fils()
{
//dtor
}
void fils::B()
{
printf("gagne !!!!!!!!!!!\n");
} |
Enfin, le main :
Code:
1 2 3 4 5 6 7 8 9 10
| int main()
{
maitre *m1 = new maitre();
fils *f1 = new fils();
m1->A();
f1->A();
delete(m1);
delete(f1);
return 0;
} |
En gros, j´aimerais afficher :"
perdu
gagne !!!!"
Pour l''instant, j'obtiens :"
perdu
perdu
"
C'est donc que pour fils, c'est la fonction B de maitre qui est appelé et non la fonction B ("la plus spécialisée") de fils. Y-a-t'il un moyen d'obtenir ce comportement, vu que "maitre" ne connait pas "fils" ?
Merci d'avance et désolé si la question parait bête ! :D