작성
·
554
0
TObjectPtr 클래스에는 static_assert 선언이 되어있습니다.
UObject 에서 파생된 클래스인지 검사하고 에러메시지를 표시해주게 되는데요.
우리가 평소 어떤 액터 클래스나 컴포넌트 클래스를 생성해서 사용할 때 내부에 TObjectPtr 을 사용해서 UObject 클래스를 등록하고 사용하게 됩니다.
문제는 UObject 의 헤더파일을 바로 포함시키기 보다는 중복 참조와 컴파일 시간을 줄이기 위해서 전방선언으로 처리하는 경우입니다.
이때 전방선언된 UObject 의 파생 클래스는 실제로 UObject 에서 파생되었는지 이 시점에서는 알 수 없습니다.
하지만 실제로 그렇게 사용해보면 문제없이 사용되는 것을 확인 할 수 있었습니다.
왜 TObjectPtr의 static_assert의 조건을 통과하는 것일까요?
Ex)
class UInputAction;
TObjectPtr<UInputAction> UTestAction; // 왜 에러가 아닐까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
비슷한 질문에 대한 답변 내용이 있는데요, 질문자님의 궁금증을 해소해 줄 수 있을 것 같습니다. 해당 내용을 확인해 보시면 TObjectPtr 사용 시 전방선언과 관련된 내용을 알 수 있을 것입니다.
관련 질문의 링크는 다음과 같습니다:
- 질문 제목: “구조체 전방선언”
- 질문 제목: “TArray에서 TObjectPtr 사용시 지정자 필수”
위 링크들을 참고하시어 궁금증을 해결하시기 바랍니다.
해당 선언은 ObjectPtr.h 의 struct TObjectPtr 선언에 선언되어있습니다.