Getting a class reference by String

Hi,

I’m in need of getting a class reference by string.

As such node does not exist in blueprints, I built one through c++:

UClass* UClassLoader::LoadClass(FString className)
{
	LoadObject<UClass>(ANY_PACKAGE,*className);
	return FindObject<UClass>(ANY_PACKAGE, *className);
}

126214-capture.png

MasterGrunt is the name of one of my classes.
However, when I run the code, Unreal crashes with this stack:

Access violation - code c0000005 (first/second chance not available)

UE4Editor_CoreUObject!UObjectBaseUtility::GetOutermost() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectbaseutility.cpp:119]
UE4Editor_CoreUObject!StaticLoadObjectInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:829]
UE4Editor_CoreUObject!StaticLoadObject() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:869]
UE4Editor_Thesis_5118!UClassLoader::LoadClass() [e:\users\jack-pc\documents\unreal projects\thesis 4.14\source\thesis\classloader.cpp:9]
UE4Editor_Thesis_5118!UClassLoader::execLoadClass() [e:\users\jack-pc\documents\unreal projects\thesis 4.14\source\thesis\classloader.h:15]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4474]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:700]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2139]
UE4Editor_CoreUObject!UObject::execLetObj() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1974]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4474]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1308]
UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:649]
UE4Editor_Engine!AActor::BeginPlay() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:3048]
UE4Editor_Engine!AActor::PostActorConstruction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:2906]
UE4Editor_Engine!AActor::FinishSpawning() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:2812]
UE4Editor_Engine!UGameplayStatics::FinishSpawningActor() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\gameplaystatics.cpp:480]
UE4Editor_Engine!UGameplayStatics::execFinishSpawningActor() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\classes\kismet\gameplaystatics.h:32]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4474]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:700]
UE4Editor_CoreUObject!UObject::ProcessContextOpcode() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2139]
UE4Editor_CoreUObject!UObject::execLetObj() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1974]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UObject::CallFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:824]
UE4Editor_CoreUObject!UObject::execVirtualFunction() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:2245]
UE4Editor_CoreUObject!UObject::ProcessInternal() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:925]
UE4Editor_CoreUObject!UFunction::Invoke() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\class.cpp:4474]
UE4Editor_CoreUObject!UObject::ProcessEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\coreuobject\private\uobject\scriptcore.cpp:1308]
UE4Editor_Engine!AActor::ProcessEvent() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:649]
UE4Editor_Engine!FInputActionHandlerDynamicSignature::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\classes\components\inputcomponent.h:105]
UE4Editor_Engine!FInputActionUnifiedDelegate::Execute() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\classes\components\inputcomponent.h:201]
UE4Editor_Engine!UPlayerInput::ProcessInputStack() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\userinterface\playerinput.cpp:1232]
UE4Editor_Engine!APlayerController::ProcessPlayerInput() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\playercontroller.cpp:2352]
UE4Editor_Engine!APlayerController::TickPlayerInput() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\playercontroller.cpp:3957]
UE4Editor_Engine!APlayerController::PlayerTick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\playercontroller.cpp:2015]
UE4Editor_Engine!APlayerController::TickActor() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\playercontroller.cpp:4039]
UE4Editor_Engine!FActorTickFunction::ExecuteTick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\actor.cpp:113]
UE4Editor_Engine!FTickFunctionTask::DoTask() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:256]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\public\async\taskgraphinterfaces.h:868]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:932]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:679]
UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:1776]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:525]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:1437]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:730]
UE4Editor_Engine!UWorld::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1340]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1422]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:371]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2859]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\launch.cpp:152]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build\++ue4+release-4.14+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Can anyone help me?

Did you ever figure this out?

I created a map on the game mode with the mapping I needed. Not perfect, but it Works! xD