Jusquà présent, toutes les structures que nous avons utilisées étaient entièrement définies dès le début. Il est toutefois permis de déclarer une structure sans en donner la définition, comme ceci :
struct exemple;
Dans ce cas, la définition doit se trouver plus loin dans le programme. Il sagit donc de quelque chose de très semblable aux prototypes de fonctions. Lintérêt est le même : on peut ainsi masquer le contenu de la structure en ne plaçant que la déclaration dans un fichier en-tête (voir chapitre 10).
On peut aussi définir des structures croisées :
struct exemple1; struct exemple2 { exemple1* pex1; // ... }; struct exemple1 { exemple2* pex2; // ... };
ce qui serait impossible autrement. Notons toutefois que les opérations nécessitant la taille de exemple1
sont interdites dans exemple2
; en particulier, on ne peut pas placer un champ de type exemple1
dans exemple2
. Les fonctions acceptant un paramètre de ce type peuvent par contre être déclarées (mais difficilement définies puisquon ne peut utiliser aucun membre de la structure).
Précédent | Sommaire | Suivant |