가끔 머리를 비우고 코드를 짜다가, 라이브코딩을 마친 후에 테스트를 하자마자 오류가 뜨고 터지는 경우가 있다.
이런 경우 클래스 간 형변환이 문제되는 적이 많았다.
먼저 C++의 형변환을 알아보자
int a = 3;
float b = (float)a; // C에서 사용하던 형변환
float b = static_cast<float>a; // c++ 에서 사용하는 형변환
위처럼 변환할 자료형을 명시적으로 작성해주는 것이 명시적 형변환이다.
이렇게 자료형을 변환해주는 것을 형변환이라 한다.
이런 형변환을 언리얼에서도 꽤나 쓴다. // 현업에서는 모르지만 나는 자주 쓴다.
어떠한 액터를 부모클래스 형식으로 받아오고, 함수 구현에서 특정 자식클래스로 변환하는 경우가 대부분이다.
AMyCharacter* MyCharacter = Cast<AMyCharacter>(MyActor); // MyCharacter 클래스로 형변환
// 형변환 결과를 확인하여 유효한지 검사
if (MyCharacter)
{
}
위 코드는 Actor 클래스인 MyActor를 새롭게 만든 MyCharacter 클래스로 형변환 시키는 예시이다.
이러한 형변환 다음에는 형변환이 잘 되었는지를 확인하는 코드가 필요하다.
그것이 if(MyCharacter) 부분인데, 여기서 형변환이 제대로 이루어지지 않았다면 false를 return하기에
Null포인터에 접근해서 게임을 터뜨리는 상황을 막을 수 있다.
터뜨리고 다시 켜는게 여간 귀찮은 일이 아니다.
🗑️언리얼의 GC (Garbage Collection) (0) | 2024.02.07 |
---|---|
👾 UStruct , UObject , UClass (0) | 2024.02.07 |
언리얼 프로퍼티 (리플렉션) (0) | 2024.02.07 |
[Unreal Engine 5 : C++] 캐릭터를 따라 회전하는 물체 만들기 (0) | 2024.02.06 |
Unreal 소스 빌드 중 SetUp.bat에서 문제가 생긴다면 (0) | 2024.01.04 |
댓글 영역