Bonjour, je fais le code suivant :
http://rafb.net/paste/results/00ZbW138.html
Comme vous voyez, j´ai un polymorphisme, avec 2 filles.
Au début du main, je cree un objet fille, que je manipule avec un pointeur mere.
Pour accéder a la méthode aaa() UNIQUE dans fille(), principe contraire du polymorphisme qui veut que chaque fille aie la meme tronche que sa mere, je suis obligé, comme vous voyez, de caster violemment la mere en fille, puis d´utiliser cela.
Question 1) Est ce que je ne risque pas ici de la perte de donnée, un mauvais cast ? Est on sur que la méthode aaa() appelée sera a la bonne adresse ?
Question 2) Serait il possible d´éviter le cast dans le main, genre pouvoir faire un truc comme la ligne commentée :
fille* f = m->aaa();
Ou alors :
fille* f = m->get()->aaa();
Avec donc une méthode get() dans la classe mere ( forcément) qui me renvoie finalement, selon la forme polymorphe, un fille* ou un fille2* ? ?
j´ai essayé de faire :
virtual mere* get()=0; dans la mere
et
fille* get(); dans la fille
et
fille2* get(); dans la fille2
mais il m´emmerde sur le fait que ce n´est pas les memes fonctions.
Bref, ce serait surtout pour éviter a l´utilisateur de faire des casts ! je prefere les faire dans les méthodes pour que l´utilisation ultérieure soit simple et fiable ! !
( PS : j´ai pensé aussi a l´héritage, mais j´ai besoin de stocker un pointeur sur la mere, donc je ne peux pas)
