KoreanFoodie's Study
[언리얼] TSharedRef 를 클래스 멤버 변수로 선언할 때 에러 본문
TSharedRef 를 클래스 멤버 변수로 선언할 때 에러
핵심 :
1. TSharedRef 를 선언할 때는 반드시 초기화를 해 주자.
2. TSharedRef 를 초기화할 때는 MakeShareable 보다 MakeShared 를 사용하자.
3. 초기화가 힘들면 TSharedPtr 로 선언하는 것도 대안이다.
TSharedRef 를 멤버 변수로 선언할 때, 만약 헤더파일이나 생성자에서 초기화를 해 주지 않는다면 아래와 같은 에러를 만나게 된다...
void EnsureRetrievingVTablePtrDuringCtor(const TCHAR* CtorSignature)
{
UE_CLOG(!GIsRetrievingVTablePtr, LogCore, Fatal, TEXT("The %s constructor is for internal usage only for hot-reload purposes. Please do NOT use it."), CtorSignature);
}
따라서 다음처럼, TSharedRef 는 생성자에서 초기화를 꼭 해주자.
UMyClass::UMyClass() : UMyClassBase(), _mySharedRef(MakeShared<SomeType>())
{
}
참고로, TSharedRef 는 다른 스마트 포인터와 달리 사용할 때마다 Pin() 등을 호출해 Nullptr 체크를 해 줄 필요가 없어 효율적이다.
참고 : 언리얼 공식 문서
'Game Dev > Unreal C++ : Dev Log' 카테고리의 다른 글
[언리얼] 비동기로 애셋 로딩 후 액터 스폰하기 (0) | 2023.04.26 |
---|---|
[언리얼] Visual Studio 한글 깨짐 (Log 한글 깨짐) (0) | 2023.03.28 |
[언리얼] ENUM_CLASS_FLAGS 사용하기 (언리얼 플래그 사용법) (0) | 2023.03.14 |
[언리얼] TimerHandle 배열 사용하기 (TimerHandle Array) (0) | 2023.03.10 |
[언리얼] 동적으로 액터 컴포턴트 생성하기 (Dynamically create ActorComponent) (0) | 2023.03.10 |
Comments