Unreal Engine crashes upon setting up my custom UserWidget::AddToViewport C++

Can someone please guide me with this issue. I have created a UserWidget class, and I have included it in my player class.

File >> Player.h

include “PlayerHudWidget.h”

public:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = “UI”)
TSubclassOf MainHUDClass;

UPlayerHudWidget* PMainHUD;

File >> Player.cpp

void ASOS_Player::BeginPlay() {
Super::BeginPlay();
if (MainHUDClass != nullptr) {
PMainHUD = CreateWidget(this->PlayerControllerRef, MainHUDClass);
PMainHUD->AddToViewport(1);
}
else {
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, TEXT(“Main HUD class not attached!!”));
}

}

When I try to begin play, my engine crashes.

image

This is a crash report

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

UnrealEditor_UMG!UUserWidget::AddToViewport() [D:\build++UE5\Sync\Engine\Source\Runtime\UMG\Private\UserWidget.cpp:1240]
UnrealEditor_Engine!AActor::DispatchBeginPlay() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Actor.cpp:4193]
UnrealEditor_Engine!AWorldSettings::NotifyBeginPlay() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldSettings.cpp:305]
UnrealEditor_Engine!AGameStateBase::HandleBeginPlay() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameStateBase.cpp:228]
UnrealEditor_Engine!AGameModeBase::StartPlay() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameModeBase.cpp:206]
UnrealEditor_ShadowOfSerpentGame!ASOS_GameModeBase::StartPlay() [E:\MyProjects\unreal engine projects\Abdul Rauf\Game\SOS\ShadowOfSerpent\ShadowOfSerpentGame\Source\ShadowOfSerpentGame\Private\SOS_GameModeBase.cpp:10]
UnrealEditor_Engine!UWorld::BeginPlay() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\World.cpp:5330]
UnrealEditor_Engine!UGameInstance::StartPlayInEditorGameInstance() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameInstance.cpp:568]
UnrealEditor_UnrealEd!UEditorEngine::CreateInnerProcessPIEGameInstance() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:3141]
UnrealEditor_UnrealEd!UEditorEngine::OnLoginPIEComplete_Deferred() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:1590]
UnrealEditor_UnrealEd!UEditorEngine::CreateNewPlayInEditorInstance() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:1853]
UnrealEditor_UnrealEd!UEditorEngine::StartPlayInEditorSession() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:2872]
UnrealEditor_UnrealEd!UEditorEngine::StartQueuedPlaySessionRequestImpl() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:1167]
UnrealEditor_UnrealEd!UEditorEngine::StartQueuedPlaySessionRequest() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\PlayLevel.cpp:1068]
UnrealEditor_UnrealEd!UEditorEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:1902]
UnrealEditor_UnrealEd!UUnrealEdEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:550]
UnrealEditor!FEngineLoop::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5921]
UnrealEditor!GuardedMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:180]
UnrealEditor!GuardedMainWrapper() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:118]
UnrealEditor!LaunchWindowsStartup() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:258]
UnrealEditor!WinMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:298]
UnrealEditor!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

I have figured out upon adding if statement. Now, when I play the game, it is executing else part only.

I tried by printing another screen message in the if statement, and it is working here, which means that the logic is fine. But, somehow it is printing both the screen messages “Widget added to viewport” and “Cannot add widget to viewport” upon begin play