Reference graph and code architecture

I’m having my first circular depdendency, basically because my custom AGameState includes custom ACharacter and vice versa.
And I’m wondering, what’s the common way to deal with that.

First of all, what’s the supposed way to setup references between classes?
Should “lower” classes include “higher abstractions” like GameState, GameMode etc?
Or should it be vice versa and Character should know nothing about GameMode for example?
Or maybe it doesn’t matter really in UE?

Also, what are the common way to “invert/fix” dependencies between classes in case circular depencendy happens?
Interfaces? BaseClasses? Delegates? Or maybe EventBus?

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.