Lors d’héritage, il risque de se produire
l’inclusion de même fichiers dans différentes
classes.
Prenons l’exemple de deux classes C1 et C2
héritant d’une même classe C. Chacune
de ces deux classes va réaliser un #include «
C.hpp ». Imaginons un programme qui a besoin
de déclarer ces deux objets, il fera un #include
« C1.hpp » et #include « C2.hpp
» ce qui provoquera une erreur du compilateur
puisqu’il verra deux fois la même classe ( C
) et donc soulèvera le problème d’une
double définition.
On prendra pour cela l’habitude pour chaque classe,
d’inclure les directives de compilation en entête
du .hpp.
#ifndef nomDeLaClasse
#define nomDeLaClasse
…
… corps du .hpp
#endif
;
Lors de la première inclusion du .hpp, une variable
correspondant au nom de la classe sera déclarée
(peu importe sa valeur, nous n’en avons pas mis ici).
A partir de la seconde inclusion, le .hpp ne sera pas pris
en compte puisque la variable sera déjà définie.