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