인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

제정민님의 프로필 이미지

작성한 질문수

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

14강 언리얼 오브젝트 관리 II - 패키지

ConstructorHelpers::FObjectFinder 컴파일 오류

작성

·

37

0

예제에 30분 경에 등장한 ConstructorHelpers::FObjectFinder 를 따라해보고 있습니다.

ACollidingPawn::ACollidingPawn()

{

...

static ConstructorHelpers::FObjectFinder<UStaticMesh> SphereVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Sphere.Shape_Sphere"));

...

}

와 같이 사용했는데 다음과 같은 컴파일 오류가 나옵니다.

 

>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(91): error C2664: 'void ConstructorHelpers::ValidateObject(UObject ,const FString &,const TCHAR )': cannot convert argument 1 from 'TObjectPtr<UStaticMesh>' to 'UObject *'

1>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(91): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

1>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(193): note: see declaration of 'ConstructorHelpers::ValidateObject'

1>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(91): note: while trying to match the argument list '(TObjectPtr<UStaticMesh>, FString, const TCHAR *)'

1>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(91): note: the template instantiation context (the oldest one first) is

1>C:\projects\unreal4sample\Unreal5Project\Example\UdnTutorial\HowTo_Components\Source\HowTo_Components\CollidingPawn.cpp(32): note: see reference to class template instantiation 'ConstructorHelpers::FObjectFinder<UStaticMesh>' being compiled

1>C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\ConstructorHelpers.h(84): note: while compiling class template member function 'ConstructorHelpers::FObjectFinder<UStaticMesh>::FObjectFinder(const TCHAR *,uint32)'

1>C:\projects\unreal4sample\Unreal5Project\Example\UdnTutorial\HowTo_Components\Source\HowTo_Components\CollidingPawn.cpp(32): note: see the first reference to 'ConstructorHelpers::FObjectFinder<UStaticMesh>::FObjectFinder' in 'ACollidingPawn::ACollidingPawn'

 

TObjectPtr 와 UObject* 와 관련된

형변환 문제로 나오는데, 어떤 차이로 인해 예제와 달리 오류가 나는 걸까요?

 

답변 1

1

이득우님의 프로필 이미지
이득우
지식공유자

UStaticMesh에 대한 헤더가 선언되어 있을까요? 아니면 컴포넌트라도

#include "Components/StaticMeshComponent.h"

제정민님의 프로필 이미지
제정민
질문자

감사합니다.

 

예전에 UE 4.1 대 버전에서 만들었던 샘플을 5.5 로 바꿔하면서 발생한 에러인데

아래 코드 추가하니 되네요.

 

#include "Engine/StaticMesh.h"

이득우님의 프로필 이미지
이득우
지식공유자

네 해결되셨다니 다행이네요. 엔진이 버전업 하면서 컴파일 능률을 위해 딱 필요한 헤더만 넣은 것 같습니다.