[Débutant] Polymorphisme et Fonction propre à la class dérivée.
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:
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:
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:
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 :aie: )
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:
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:
1 2 3 4
|
ModuleManager->Module[Window]->CreateWindow();
ModuleManager->Module[Entity]->Player->Move();
etc |
Une solution autre que recoder tout mon moteur ? Pitié ? :mrgreen:
Hein ? Qui a dit "Apprend le C++ avant de coder n'mporte quoi !" ?