[POO] Problème de redéfinition de méthodes
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.
Code:
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()
{
...
}
}; |
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.
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.