Klassen, die sich gegenseitig kennen, sind i.A. (also nicht immer!) ein Indikator für schlechtes Design. Ich würde es mit einem Mediator-Pattern versuchen, der zwischen beiden Klassen vermittelt.
Geht das nicht, sind
imho Interfaces die sauberere Alternative zu forward-Deklarationen.