Forward declaration is the only way to break the cyclic inclusion.
This is the main drawback when not used carefully, I think. I worked in a large project where forward declarations are made whenever possible. Cyclic dependencies were a real problem in the end.