Au collège, ils nous ont enseigner seulement du Java, donc lorsque je veux faire quelque chose d'un peu plus poussé, je me retrouve avec ce problème...
J'ai 2 classes toute simples.
Ensuite, si je déclare un object a et un object b, aucun problèmes. Si je déclare un pointeur a et qu'il pointe vers un object b, je dois simplement changer f en virtuel, aucun problèmes.
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
27
28
29
30
31
32
33 class a { public : int ID; void f() { ... } a() { ID = 0; } }; class b: public a { public : int x; b() { ID = 1; } void f() { ... } };
Mon problème, c'est que je n'ai aucune idée de combien il va y avoir d'objects a ou b, donc je les store dans un tableau d'object a. Ensuite, quand vient le temps d'appeler la méthode f, j'appelle toujours celle de a. J'ai essayé de caster l'objet sortant du tableau en b lorsque ID = 1, mais cela me donne une erreur "a cannot be cast to b". Ceci marche en java, je m'en suis servis plusieurs fois au travail, mais il y a probablement une petite nuance C++ que j'oublie, et à cause de celle-ci, il m'est impossible de pouvoir accéder à la valeur x de b aussi-tot qu'il est inséré dans un tableau de a.
J'ai essayé aussi avec un vecteur, même résultat.
Partager