g un probleme.
j ai une classe CPersonne. Une autre classe CAmi qui est une sous classe de CPersonne.
dans CAmi je redefinie la methodes Afficher() de CPersonne
et je met virtual devant sa declaration.
mon BUT: stocker dans un pointeur de type CPersonne , une instance de la classe CAmi, puis lorsque j appelle la methode Afficher() c est la methode de CAmi qui se declenche.
bon voila ce que je fais et qui marche tres bien:
------------------------------------------------------
CPersonne * pPersonne = new CPersonne;
CAmi Ami;
//j initialise l ami:4 parametres(alors que la personne en a 3)
Ami.Init("lebarbare", "canard", 21 ,"bon pote");
//puis je le copie dans la personne:
memcpy(pPersonne,&Ami,sizeof(Ami));
//maintenant si je fais Afficher():
pPersonne->Afficher();
//VOILA CE QUI SORT:
nom=lebarbare
prenom=canard
age=21
c est un bon pote :)
------------------------------------------------------
Donc ça c ce que je veux.
MAIS ça ce n est qu un test (qui fonctionne), en réalité j'ai fait un template de collection (comme en VB), qui doit contenir des objets du type précisée et des classes en découlant (des copies pas juste des pointeurs sur ces objets).
le truc c ke je fais exactement comme ce que g fait en haut...
Mais lorsque je fais Afficher() là il m affiche effectivement CAmi::Afficher() , c est a dire nom, prenom, age et niveau d'amitié (alors que CPersonne::Afficher() ne renvoit que nom, prenom, et age) MAIS NIVEAU D AMITIE EST INCOHERENT!!!
mais attention la valeur n est pas non initialisé c juste pas du tout ce que j ai mis dans init()....
voila j espere que g été compréhensible, aidez moi siouplait il s'agit d un des prog que je dois présenter pour mon BTS info/developpeur le 18 juin :(