Store a list of function

I am trying to create a parser that can call functions. I would like to store specific functions that can then be iterated through and call.
To store my function, I created this class, however, I crash when I tried to add the function to my class:

DECLARE_DELEGATE_RetVal(FString, FFunction);

UCLASS()
class UParseFunction:public UObject
{
	GENERATED_BODY()
public:
	UParseFunction(){};	

	UPROPERTY()
	TArray<FName> PossibleStringName;

	//UPROPERTY()
	FFunction FunctionToCall;
};

Actor constructor:

See edit

Also open to idea if you have other technics to call functions by text.

EDIT:
After more testing, I had to make some changes but still get an error. I moved the construction in begin play since after reading the doc, during construction time the pointer to the function does not exist supposedly. Also, since i’m no longer in the constructor, I replaced the CreateDefaultSubObject() with NewObject()

Tester.cpp

void AParserTester::BeginPlay()
{
	Super::BeginPlay();

	auto obj = NewObject<UParseFunction>(this);
	
	if (obj)
	{
		UE_LOG(LogTemp,Warning,TEXT("[ParserTester] OBJ existe"))
		obj->PossibleStringName = { "Test", "test", "Test()" };
		obj->FunctionToCall.BindSP(this, &AParserTester::Test);//This line make me crash
		Functions.Add(obj);	
	}	
}

Tester.h:

UCLASS()
class THAGAME_API AParserTester : public AActor , public IParserObject, public TSharedFromThis<AParserTester>
{
	GENERATED_BODY()
public:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

	UFUNCTION()
	FString Test();
}

And now i get this error:

Assertion failed: SharedThis.Get() == this [File:D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Templates/SharedPointer.h] [Line: 1329]

UnrealEditor_ThaGame_0001!TSharedFromThis::AsShared() [D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h:1329]
UnrealEditor_ThaGame_0001!TDelegate::CreateSP() [D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:228]
UnrealEditor_ThaGame_0001!AParserTester::BeginPlay() [D:\Unreal\Project\UE5\ThaGame\Source\ThaGame\Parser\ParserTester.cpp:30]
UnrealEditor_Engine

Hello! Can you provide error message?

Assertion failed: SharedThis.Get() == this [File:D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Templates/SharedPointer.h] [Line: 1329]

UnrealEditor_ThaGame_0001!TSharedFromThis::AsShared() [D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h:1329]
UnrealEditor_ThaGame_0001!TDelegate::CreateSP() [D:\Unreal\Engine\UE_5.0EA\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:228]
UnrealEditor_ThaGame_0001!AParserTester::AParserTester() [D:\Unreal\Project\UE5\ThaGame\Source\ThaGame\Parser\ParserTester.cpp:16]
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_HotReload
UnrealEditor_Core
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

I got it, I followed an example on how to create a Delegate and the example was using BindSP() to bind the function, after getting errors for that function, I inherited from TSharedFromThis<> after looking up the error on the net not knowing what it was used for.

After a lot of pain, I realized that BindSP() probably stands for Bind Shared Pointer(which I don’t know how to use)

I re-read the doc for delegates and saw that there were other way’s of binding, after changing BindSP for BindUObject() all the error were gone and it was working

obj->FunctionToCall.BindUObject(this, function);