This code describes the concept: module a; import B; struct A { B *ptr; } --------------------- module b; import A; struct B { A *ptr; } ----------------------------- Can this be done? Do both classes have to be in the same module?