There are three technique to make a header file more self-contained:
Avoid using objects when object references and pointers will do
This will avoid the need of including a header file
Don't _#include_ header files in your header files unless your headers won't compile without them
Use forward declaration instead
Probably useful technique if the scale of the c++ project warrants it?