인프런 커뮤니티 질문&답변

hush park님의 프로필 이미지
hush park

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

2강 캐릭터와 입력 시스템

const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); 구문 질문입니다.

작성

·

108

0

const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);

 

void AABCharacterPlayer::Move(const FInputActionValue& Value)의 몸체에 구현하신 구문 중 하나인데요, FRotationMatrix는 탬플릿 클래스가 맞나요? (챗gpt가 자꾸 아니라고 해서..ㅠ)

f12로 추적해보면

template<typename T>

struct TRotationMatrix

: public TRotationTranslationMatrix<T>

{

가 떠서 탬플릿클래스가 맞는게 아닌가 싶어서 확인차 질문드립니다.

 

그리고 만약 탬플릿클래스가 맞다면,

 

const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);

 

의 우측에 FRoataionMatrix 생성자를 호출할때 사이에 탬플릿 인자를 <타입> 으로

const FVector ForwardDirection = FRotationMatrix<float>(YawRotation).GetUnitAxis(EAxis::X);

이런식으로 명시하지 않아도 컴파일이 가능한 이유가 무엇인지 궁금합니다.

 

 

 

 

답변 1

0

이득우님의 프로필 이미지
이득우
지식공유자

template<typename T>
struct TDeduction
{
public:
    TDeduction(const T& InData) : Data(InData) {}
    T Data;
};

int main()
{
    TDeduction F = 10.0f;
    std::cout << "Hello World!\n";
}

위 코드는 C++ 14에서는 에러가 발생하지만 C++ 17에서는 잘 동작합니다.
언리얼 엔진은 현재 C++17을 사용합니다.

hush park님의 프로필 이미지
hush park
질문자

확인했습니다. ++14버전으로 사용중이어서 안되었던것 같습니다. 17버전에 탬플릿 인수 추론기능(?) 이라는게 추가되어서 되나보군요..

 

hush park님의 프로필 이미지
hush park

작성한 질문수

질문하기