* main.h ? non, très mauvaise idée. Chaque .cpp doit inclure les headers dont il se sert, et ce de manière indépendante des headers qui sont inclus par le jeu des dépendances. Un court exemple :
1 2 3 4 5 6 7 8 9
|
// classe1.h
include "classe2.h"
...
// classe3.cpp
#include "classe1.h"
...
classe2 un_objet; |
Alors classe3.cpp doit include classe2.h, et ce même si ce fichier est automatiquement inclus du fait de l'inclusion de classe1.h. La raison derrière ce point : les dépendances peuvent changer au gré des refactoring. Un refactoring étant par essence local, il ne doit pas avoir d'impact global. Si classe1.h n'a plus besoin de classe2.h et ne l'inclus plus, alors classe3.cpp doit quand même compiler.
Bien évidemment, si classe3.cpp ne traite pas directement d'objets de type classe2, alors il n'inclus pas classe2.h (l'inclusion étant alors un détail d'implémentation de classe1.h).
En outre, le fait d'inclure dans un .cpp tous les headers dont il a besoin.
Partager