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 :
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 class Base { public : Base(); virtual ~Base() = 0; }; Base::~Base() { }
Et ce que j'aimerais pouvoir faire :
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 }
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()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int main(void) { Base* ptrBase = new Derivee1; ptrBase.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 :
Mais j'aimerais également pourvoir faire ceci :
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(); }
Une solution autre que recoder tout mon moteur ? Pitié ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ModuleManager->Module[Window]->CreateWindow(); ModuleManager->Module[Entity]->Player->Move(); etc
Hein ? Qui a dit "Apprend le C++ avant de coder n'mporte quoi !" ?
Partager