Op should be using interfaces. There’s no reason to have a reference to the character in an attached actor.
e.g. The character class would have a simple BP Interface (BPI_Pawn) for passing specific called for data back to various classes (weapon, controller, player state etc). In the weapon class you use Get Owner
as the reference to the base owning class (Character/Pawn) Then call a BPI_Pawn function.
BPI_Pawn :: Get Character movement component
In the character class you’d edit the interface function to pass CMC.
Weapon class
No need for a cast or reference