In the general case, if you have two classes that depend on each other and one dependency is only on references or pointers, you can forward declare one of them before declaring the other, and define the methods after both are declared:
Code:
struct X;
struct Y
{
Y( X & other ); // arguments (passed by pointer/reference/value are allowed)
X f(); // return values are ...



