Cross reference and circular dependency. Header including itself indirectly
http://stackoverflow.com/questions/8619872/cross-reference-and-circular-dependency-header-including-itself-indirectly

Only include headers if you MUST

Use forward declaration in preference to including:

You only need to include the header for class X iff:

You have a member of the class 'X'
You derive from the class 'X'
You pass a parameter of class 'X' by value.
Otherwise a forward declaration will suffice.