• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Cast함수 문법

24.05.09 09:09 작성 조회수 64

0

Owner = Cast<ACharacter>(GetOwningActor());

if (Owner)

{

Movement = Owner->GetCharacterMovement();

}

블프에서 캐스트를 당연한게 늘썼는데,코드에서 보니 반가워서 생략된건가싶어,

Owner =ACharacter* Cast<ACharacter>(GetOwningActor());

라고 쓰니까 에러가 납니다.

F12눌럿 보니,

FORCEINLINE To* Cast(From* Src)

로 되있는데, 왜 지금은 자료형을 표시안하는게 맞나요?

답변 1

답변을 작성해보세요.

0

안녕하세요.
어떤 자료형이 생략되었다는 것인지 궁금하네요.
말씀하신대로 템플릿은 다음과 같이 선언되어 있습니다.

template <typename To, typename From>
To* Cast(From* Src);

템플릿 인자는 두 개지만, 두 번째 From은 보통 추론(Deduction)으로 자동 처리되기 때문에 일반적으로 사용하진 않습니다. ( 컴파일러가 알아서 배정해줍니다. )

아무튼 아래 코드는
Owner =ACharacter* Cast<ACharacter>(GetOwningActor());

ACharacter* 타입을 두 번 표기한 셈이라 문법오류가 났을 것 같네요.

 

윽,아무래도 짤막한 C++포인터지식문제인거같습니다. 문법책에서 봤을땐 다이해한거같았는데,언리얼포인터는 왜이렇게 못알아보겠는지 모르겠습니다. ㅠㅠ 죄송합니다...

아니에요, 실수하면서 다 배우는 거죠.

적극적으로 계속 질문 해 주세요.

선생님,찾았습니다. 맨앞에 ACharacter* 포인터자료형이 왜 없을까.. 였어요. auto도 없고,.없는데 어떻게 포인터인지알지? 언리얼오브젝은 다 포인터라 그런가....근데,맞는 문법이고,..근데 적어도 이 문장하나는 잊지않을거같습니다. ㅠ 감사합니다!

ACharacter* Character = Cast<ACharacter>(GetOwningActor());