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