Bonjour à tous.


J'aimerais savoir s'il existe un moyen d'appeler une fonction propre à une classe dérivée à partir d'un pointeur sur la classe de base ?

Soit une classe de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
class Base
{
    public :
        Base();
        virtual ~Base() = 0;
};
 
Base::~Base()
{
}
La classe dérivée :
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
 
class Derivee1 : public Base
{
    public :
        Derivee();
        virtual ~Derivee();
        void MaFonctionUniquementPresenteDansDerivee1();
};
Derivee::Derivee() :
    Base()
{
}
Derivee::~Derivee()
{
}
void Derivee::MaFonctionUniquementPresenteDansDerivee1()
{
     // Des trucs
}
Et ce que j'aimerais pouvoir faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int main(void)
{
    Base* ptrBase = new Derivee1;
    ptrBase.MaFonctionUniquementPresenteDansDerivee1();
Le problème est qu'en faisant comme cela mon compilateur me dit à juste titre je suppose que la classe base n'as pas de membre : MaFonctionUniquementPresenteDansDerivee1()

Alors bon je suis un débutant et si vous vous demandez bien pourquoi je veux faire cela et bien c'est très simple(à défaut d'être faisable apparament )

J'ai une classe ModuleManager qui me permet de faire ce que son nom indique.
Mais comme j'ai pas envie de me fouler à initialiser chaque module à la main surtout si j'en ai 53, j'aimerais pouvoir faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for(int i = 0; i < NOMBRE_DE_MODULE; i++)
{
    Module[i]->Init();
}
Mais j'aimerais également pourvoir faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ModuleManager->Module[Window]->CreateWindow();
ModuleManager->Module[Entity]->Player->Move();
etc
Une solution autre que recoder tout mon moteur ? Pitié ?
Hein ? Qui a dit "Apprend le C++ avant de coder n'mporte quoi !" ?