Yup, not sure why casts have so bad opinion around here.
Only bad aspect of casting is that you create dependency between 2 actors. So they will always be loaded, and if you have multiple actors of same class that cast to multiple actors of other class and so on, you may have everything always loaded in map.
For your code i would use bleuprint interfaces, if you may have different classes of actors that communicate. Like class_player, class_ball and class_team, all share some variable.
Or direct cast to. For easier use make pure cast with reading variable from other actor into single easy to use function (also pure). This way it will be like variable.
Some more tuts to watch. I think You want to make something like this system: