You cannot forward declare a class or struct if you don’t use it as a pointer. Pointers have fixed sizes so the compiler can allocate enough space for it. Non-pointers, on the other hand, are variable sizes and the compiler doesn’t know how much memory to allocate at compile time.
Your illegal line is line 10 where you have attempted to use an incomplete class type. Change the variable to a pointer. If you do not change it to a pointer you will not be able to compile two structs that have a strong dependence on each other.