Je suis assez nouveau en C++, mais ce que je comprends, c'est qu'une déclaration #include va essentiellement simplement déverser le contenu du fichier #inclus à l'emplacement de cette déclaration. Cela signifie que si j'ai un certain nombre de déclarations '#include' et 'using' dans mon fichier d'en-tête, mon fichier d'implémentation peut simplement inclure le fichier d'en-tête, et le compilateur ne se souciera pas si je ne répète pas les autres déclarations.
Et les personnes alors?
Ma principale préoccupation est que si je ne répète pas les déclarations '#include', 'using', et aussi 'typedef' (maintenant que j'y pense), cela retire ces informations du fichier dans lequel ils sont utilisés, ce qui pourrait causer de la confusion.
Je travaille actuellement sur de petits projets où cela ne posera pas vraiment de problèmes, mais je peux imaginer que dans de plus grands projets avec plus de personnes qui y travaillent, cela pourrait devenir un problème significatif.
Un exemple suit:
MISE À JOUR: les prototypes de mes fonctions pour 'Unit' ont des types de retour et des paramètres comme string, ostream et StringSet - je n'inclus rien dans mon fichier d'en-tête qui est utilisé uniquement dans le fichier d'implémentation.
//Unit.h
#include
#include
#include "StringSet.h"
using std::string;
using std::ostream;
class Unit {
public:
//membres publics avec string, ostream et StringSet
//dans leurs valeurs de retour/listes de paramètres
private:
//membres privés
//question annexe : les membres privés
//devraient-ils même être inclus dans le fichier d'en-tête?
} ;
//Unit.cpp
#include "Unit.h"
//Ce qui suit est tout redondant d'un point de vue du compilateur:
#include
#include
#include "StringSet.h"
using std::string;
using std::ostream;
//implémentation va ici