Cpp Coding Standards/HEADERS/Self
From Apache OpenOffice Wiki
Self Sufficient and Minimal (Self)
When included, a header file should be self sufficient and minimal.
- Include definitions for superclasses, data members, typedefs, macros, types denoted in exception-specifications, ...
- Create forward declarations for everything else (but note that this introduces unwanted coupling, when for example a template declaration is later on extended with defaulted parameters, or a struct definition is replaced with a typedef)
- Include the definition as late as possible, this helps reduce physical dependencies
// Foo.hxx // Superclass and data member #include "Super.hxx" #include "Data.hxx" // Forward declarations class Param; // This does not need a class definition Param doSomething1(Param aParam); class Foo : public Super { public: // This does not need a class definition either Param doSomething(Param aParam); private: Data mData; };
// Anotherfile.cxx #include "Foo.hxx" #include "Param.hxx" // Now we need the definition ... Param p; p = doSomething1(p); // Error without the definition