상세 컨텐츠

본문 제목

언리얼 형변환(과 CPP 형변환 , Cast)

Study/UNREAL

by J2on 2024. 2. 7. 18:34

본문

 

가끔 머리를 비우고 코드를 짜다가, 라이브코딩을 마친 후에 테스트를 하자마자 오류가 뜨고 터지는 경우가 있다. 

 

이런 경우 클래스 간 형변환이 문제되는 적이 많았다. 

 

 

먼저 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포인터에 접근해서 게임을 터뜨리는 상황을 막을 수 있다. 

 

터뜨리고 다시 켜는게 여간 귀찮은 일이 아니다. 

관련글 더보기

댓글 영역