Bonjour,
Je ne sais pas si le titre est bien choisi mais soit, quelqu'un pourrait t'il m'expliquer pourquoi ce code n'est pas accepté par le compilateur (la dernière ligne, il me dit que la conversion de A* vers B* est impossible). Le but est d'obtenir un pointeur du type dérivé à partir d'un pointeur du type de base, grace à une méthode virtuelle qui renvoie le pointeur this, et dont le type de retour dépend bien sur du type de l'objet.
Je sais qu'un dynamic cast résoudrait le problème, mais je voudrais savoir pourquoi cette méthode ci n'est pas correcte, vu qu'elle me semble bien foutue.
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
23
24
25
26 class A { private: int a; public: virtual A* getThis() = 0; }; class B : public A { private: int b; public: virtual B* getThis() {return this;} }; int main() { A* a; B* b = new B; a = b; b = a->getThis(); }
Partager