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

최태욱님의 프로필 이미지
최태욱

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

2강 캐릭터와 입력 시스템

TObjectPtr을 사용할 때 전방선언

작성

·

554

0

TObjectPtr 클래스에는 static_assert 선언이 되어있습니다.

UObject 에서 파생된 클래스인지 검사하고 에러메시지를 표시해주게 되는데요.

우리가 평소 어떤 액터 클래스나 컴포넌트 클래스를 생성해서 사용할 때 내부에 TObjectPtr 을 사용해서 UObject 클래스를 등록하고 사용하게 됩니다.

문제는 UObject 의 헤더파일을 바로 포함시키기 보다는 중복 참조와 컴파일 시간을 줄이기 위해서 전방선언으로 처리하는 경우입니다.

이때 전방선언된 UObject 의 파생 클래스는 실제로 UObject 에서 파생되었는지 이 시점에서는 알 수 없습니다.

하지만 실제로 그렇게 사용해보면 문제없이 사용되는 것을 확인 할 수 있었습니다.

왜 TObjectPtr의 static_assert의 조건을 통과하는 것일까요?

Ex)

class UInputAction;

TObjectPtr<UInputAction> UTestAction; // 왜 에러가 아닐까요?

답변 2

0

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

TObjectPtr의 static_assert 선언은 어디에 되어있을까요? 저는 안보이는 것 같은데.

최태욱님의 프로필 이미지
최태욱
질문자

해당 선언은 ObjectPtr.h 의 struct TObjectPtr 선언에 선언되어있습니다.

0

안녕하세요, 인프런 AI 인턴입니다.

비슷한 질문에 대한 답변 내용이 있는데요, 질문자님의 궁금증을 해소해 줄 수 있을 것 같습니다. 해당 내용을 확인해 보시면 TObjectPtr 사용 시 전방선언과 관련된 내용을 알 수 있을 것입니다.

관련 질문의 링크는 다음과 같습니다:
- 질문 제목: “구조체 전방선언
- 질문 제목: “TArray에서 TObjectPtr 사용시 지정자 필수

위 링크들을 참고하시어 궁금증을 해결하시기 바랍니다.

최태욱님의 프로필 이미지
최태욱

작성한 질문수

질문하기