Do you need to actually set a RootComponent? (I also ask this to the community, not rhetorically!)
In my C++ actors, following from examples, I’ve always called CreateDefaultSubobject, like you have. Then with one of them, set it as the RootComponent. So in your case, something like:
...
TriggerBox = CreateDefaultSubobject<UBoxComponent>( TEXT( "TriggerBox" ) );
RootComponent = TriggerBox;
...
I’m wondering if there must be a RootComponent set, before you can then call AttachToComponent( GetRootComponent()…, lest that return a NULL/nullptr?