Bonjour,
Dans son tutoriel sur l'héritage en C, http://chgi.developpez.com/c/heritage/ , CGi utilise la méthode suivante:
Quand on veut qu'une structure hérite d'une autre structure, le début de la classe fille doit être le même que celui de la classe mère. Les nouveaux attributs sont ajoutés à la fin.
Exemple:
Il utilise le polymorphisme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 struct Mere { int a; int b; }; struct Fille { // membres de Mere int a; int b; // membres de Fille int c; }
Le C garantit que le premier élément de la structure est à l'addresse 0, donc ça doit marcher pour "a" tout le temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct Mere *m; struct Fille f = { 1, 2, 3 }; m = (struct Mere *) &f; // utiliser m->a et m->b
Ma question est: est-ce que pour les autres éléments de la structure, ça marchera quelque soit le type et le nombre d'attributs, et quelque soit le compilateur ? Parce que le compilateur peut également ajouter des octets de remplissage (padding).
Partager