C++ ACharacter overlapping different kinds of AActors - Observer pattern?

You could create a base class for your collectables with a type enum, cast to your collectable type on overlap and read the enum.