Replace Root Component on an Inherited Class

Alright never mind haha. It’s always right after you think you can’t do something that you find the solution.

So apparently the solution was very simple:

SuperClass.h

// Declare a sphere component 
UPROPERTY(VisibleDefaultsOnly, Category = Interact)
class USphereComponent* InteractArea;

SuperClass.cpp

// Create subobject in the constructor
InteractArea = CreateDefaultSubobject<USphereComponent>(TEXT("InteactArea"));
RootComponent = InteractArea;

SubClass.h

// Declare a new component to use as the new root component
UPROPERTY(VisibleDefaultsOnly, Category = Interact)
class UStaticMeshComponent* SM;

SubClass.cpp

// Create the subobject make it the new root component
SM = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("SM"));

// Note that this makes SM the new root but it then attaches the previous root to SM
RootComponent = SM;

/* 
 * The above code makes SM the new root as mentioned, but then it effectually does:
 *      InteractArea->SetupAttachment(GetRootComponent());
 * 
 * At least that's what I'm observing. It could be doing something else.
 */

This is the behavior I was going for, but hopefully others will find this helpful too.