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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !