Bonjour,
Je voudrais avoir votre avis pour savoir ce que l'on a le droit de mettre dans un header file...
D'après la norme C++, au §3.2 "One definition rule", il est dit
"No translation unit shall contain more than one definition of any variable, function, class type, enumeration type or template"
Dans un header, il faut donc éviter les définitions sinon en cas d'inclusion multiple ou récursive de header, ces définitions seront répétées dans la translation unit (ce qui implique le pb de définition multiple) . Ceci même si on se protège avec les #ifndef.
Ceci implique qu'un header ne doit comporter que des déclarations.
Une déclaration de classe est
Une définition de classe est
Code : Sélectionner tout - Visualiser dans une fenêtre à part Class C;
D'apres la norme, on ne pourrait pas mettre dans un header les définitions précédentes...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Class C {...} Class C'{ int x; int f(); } Class C'' { int x; int f() {...} }
Ce qui est étrange c'est que la plupart des développeurs mettent les classes de types C' dans les header et font l'implémentation des fonctions dans les fichiers .cpp....
Qu'en pensez vous?
Ai je raté qqchose?
Merci d'avance,
F.
Partager