작성
·
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을 사용합니다.
확인했습니다. ++14버전으로 사용중이어서 안되었던것 같습니다. 17버전에 탬플릿 인수 추론기능(?) 이라는게 추가되어서 되나보군요..