Create Blueprint components in C++

I have created a SpellComponent which I use to create Spells in Blueprint. Now I want to create the Blueprint component in C++


	
        UPROPERTY(EditDefaultsOnly, Category = Spell)
	TSubclassOf<USTSpell> Spell1Class;
	UPROPERTY()
	USTSpell* Spell1;


The idea was to let the client choose a Spell via


TSubclassOf<USTSpell> Spell1Class;

and then I would do something like



Spell1 = CreateDefaultSubObject(Spell1Class);


Is this even possible?

I am also not sure if my spell should really be an ActorComponent. I just wanted to have a class that doesn’t need to exist in the world and it should have the possibility to Tick.

Should I just derive form UObject and make a custom Tick function that I call from my Character for example


UCLASS()
class Spell : public UObject
....

void FooCharacter::ReceiveTick(float Dt){
    Spell1->Tick(Dt);
}