It is possible to make circular references from class A to class B and vica-versa using forward declarations
class class_a;
class class_b;
class class_a {
    class_a(class_b& arg) : ref_to_b(arg){}; // constructor
    class_b& ref_to_b;
};
class class_b {
    class_b(class_a& arg) : ref_to_a(arg){}; // constructor
    class_a& ref_to_a;
};
How to create instances of such classes?