Stop cross-include of your header files and you will be fine. Put the declarations in one header file, for example.
You also need forward class declaration. For example:
ref class BBB;
public ref class AAA {
BBB^ bbb;
};
public ref class BBB {
AAA^ aaa;
};
It won't be possible if you used not class references by the instances in by-value semantic, by obvious reasons: instantiation would cause infinite construction due to infinite constructor recursion.
—SA