cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 27 nov. 2008 à 12:19
Salut,
Bin sans mettre dwData3 au même offset dans les deux structures, je ne vois pas comment ce serait possible. Un genre d'héritage quoi, mais je suppose que tu connais la méthode.
Dans le cas suivant CHILD1 et CHILD2 ont toutes les deux la données intéressante (dwData3, mais en fait le nom n'a aucune importance) au même offset, c'est à dire 8 octets après leur adresse (Attention à l'alignement dans le cas de champs avec des types hétérogènes comme ici).
On peut donc accèder à ce membre en castant les strucutres en PARENT, peut importe que ce soit des CHILD1 ou des CHILD2 en mémoire.
C'est un mécanisme similaire qui est très souvent utilisé en prog orientée objet : les classes filles ont les membres de leurs parentes suivis de ses propres membres.
<hr size="2" width="100%" />typedef struct _CHILD1 {
DWORD dwData1;
DWORD dwData2;
DWORD dwData3;
} CHILD1, *LPCHILD1;
HeavenForsaker
Messages postés223Date d'inscriptionmercredi 13 juillet 2005StatutMembreDernière intervention 8 août 2011 27 nov. 2008 à 20:14
Salut rt15,
Merci beaucoup pour ta réponse. Cette solution aurait été parfaite mais malheureusement les données qui m'intéressent sont à des offsets différents. Je crois que je n'aurais pas d'autre choix que de dupliquer le code pour chaque structure.