UE4 has it’s own message bus implementation if you interested, it’s has the longest description i ever seen yet in API reference so it should be good starting point:
I have an actor class with a function
I’d like to call without casting to it
first (cause I’ll have multiple
classes with a function named the same
thing later on).
If you want to relate unrelated classes, you can use inteface. C++ does not formally support interfaces, instead it support multiple class inheritance which let you do similar thing, UE4 reflection system won’t let use multiple inheritance itself inside UObject class tree, but it utilizes that feature to emulate interfaces.