Struggling with mouseover events

I notice that you aren’t using ObjectInitializer. And you certainly will crash if you try spawning object components outside of the constructor. Code should look something like this (from memory, typing on phone)

.h


MyClass(const FObjectInitializer& ObjectInitializer);

.cpp


MyClass::MyClass(const FObjectInitializer& ObjectInitializer)
 : Super(ObjectInitializer)
{
RootComponent  = ObjectInitializer.CreateDefaultSubobject<UArrowComponent>(this, TEXT("Arrow"));

auto* cap = ObjectInitializer.CreateDefaultSubobject<UCapsuleComponent>(this, TEXT("Capsule"));
cap.AttachParent = RootComponent; 
}  

You might find that relying on a specific root component type is problematic in many cases. You can still add dynamic events to sub components.