작성
·
158
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* 타입을 두 번 표기한 셈이라 문법오류가 났을 것 같네요.
선생님,찾았습니다. 맨앞에 ACharacter* 포인터자료형이 왜 없을까.. 였어요. auto도 없고,.없는데 어떻게 포인터인지알지? 언리얼오브젝은 다 포인터라 그런가....근데,맞는 문법이고,..근데 적어도 이 문장하나는 잊지않을거같습니다. ㅠ 감사합니다!
ACharacter* Character = Cast<ACharacter>(GetOwningActor());
윽,아무래도 짤막한 C++포인터지식문제인거같습니다. 문법책에서 봤을땐 다이해한거같았는데,언리얼포인터는 왜이렇게 못알아보겠는지 모르겠습니다. ㅠㅠ 죄송합니다...