Unreal Engine 5._

[Unreal Engine] C2027 : use of undefine type 'AHUD'

ruru14 2022. 12. 26. 15:02

GameMode를 오버라이드 하는 도중, HUD클래스를 읽어오지 못 하는 이슈가 발생했습니다.

 

문제가 된 코드는 다음과 같습니다.

AMyGameMode::AMyGameMode() {
    static ConstructorHelpers::FClassFinder<APawn> MyPawn(
        TEXT("<MyPawnDir>_C"));
    if(MyPawn.Succeeded()) DefaultPawnClass = MyPawn.Class;
    
    static ConstructorHelpers::FClassFinder<AController> MyController(
        TEXT("<MyControllerDir>_C"));
    if(MyController.Succeeded()) PlayerControllerClass = MyController.Class;
    
    static ConstructorHelpers::FClassFinder<AHUD> MyHUD(
        TEXT("<MyHUD_Dir>_C"));
    if(MyHUD.Succeeded()) HUDClass = MyHUD.Class;
}

위와 같이, 게임모드에서 관리되는 클래스를 오버라이드 하는 도중, HUD를 읽어오는 데 문제가 발생했습니다.

 

다음은 해당 문제로 발생한 컴파일 에러의 일부입니다.

\UE_5.0\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(188): error C2027: use of undefined type 'AHUD'
\UE_5.0\Engine\Source\Runtime\Engine\Classes\GameFramework\GameModeBase.h(19): note: see declaration of 'AHUD'
\UE_5.0\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(183): note: while compiling class template member function 'ConstructorHelpers::FClassFinder<AHUD>::FClassFinder(const TCHAR *)'

Pawn, Controller등의 다른 클래스는 잘 읽어오면서, HUD는 읽어오지 못 하는 상황이 발생했습니다.

 

해당 문제는 HUD 클래스를 include하는 것으로 해결했습니다.

#include <GameFramework/HUD.h>

Pawn, Controller등도 GameFramework에 있는데, HUD만 컴파일 에러를 발생시키는 이유는 모르겠습니다.

관련 문서를 찾게 되면 글을 남기도록 하겠습니다.

 

감사합니다.