You would normally use either references or pointers rather than the object itself. The Game State could need to hold a Character object, but the Character should only have a reference or pointer to the Game State. Each class should only know the minimum it needs to run, or things get messy. I would say Character should not know about Game Mode.