강의

멘토링

로드맵

Inflearn brand logo image

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

김태훈님의 프로필 이미지
김태훈

작성한 질문수

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

6강 언리얼 오브젝트 리플렉션 시스템 II

GetName이 이미있는데용?

작성

·

38

·

수정됨

0

 

25.08.12 일

언리얼 5.4

VS 2022 기준으로

 

const FString& GetName() const;

를 알트 + 엔터 해보면

const FString& GetName() const

{

if(CachedNameString.IsEmpty() && !Key.Name.IsNone())

{

CachedNameString = Key.Name.ToString();

}

return CachedNameString;

}

 

요렇게 이미 있네요..!?

 void SetName(const FString& InName);

 

이것도 있어유

 

void SetName(const FString& InNameString)

{

if(NameString.IsSet())

{

if(NameString.GetValue().Equals(InNameString, ESearchCase::CaseSensitive))

{

return;

}

}

Name.Reset();

NameString = InNameString;

}

 

 

 

 

답변 2

0

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

안녕하세요. 답신이 늦었습니다.
먼저, 질문 주신 GetName()과 SetName()이 언리얼 엔진 내부의 어느 코드에 있는지 확인해주시면 좋을 것 같습니다.
"이미 GetName()과 SetName()이 있는데, 왜 같은 메소드를 또 구현을 했는지"가 궁금하신게 맞다면, Person 클래스에 추가한 Name 변수의 Getter와 Setter를 명시적으로 구현해서 설명의 단순화를 위함이라고 이해하시면 좋을 것 같습니다.

엔진에서 제공하는 다른 기능까지 소개할 수는 있겠지만, 이번 강의의 관점인 언리얼 리플렉션에 집중하기 위해서 따로 구현해 사용하면 Person 클래스의 구조만 이해하면 되기 때문에 설명이 쉬워집니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김태훈님!

주신 질문은 언리얼 엔진 코드 내부에서 Getter와 Setter가 이미 제공된 상황에서, 이들의 구현이 어떤 역할을 하고 있는지에 대한 것입니다.

언리얼 엔진에서는 객체의 상태를 효율적으로 관리하기 위해 C++에서 이러한 Getter와 Setter 메서드를 제공하는 경우가 많습니다. GetName()SetName()은 이러한 필수적인 메서드로, 객체의 명칭 값을 읽고 쓰는데 사용됩니다.

  • GetName() 메서드는 문자열 캐싱을 통해 성능을 최적화합니다. 만약 CachedNameString이 비어있고, Key.Name이 유효하다면, 문자열 변환 후 캐시하여 다시 반환합니다. 이는 동일한 요청 시 반복적인 변환 작업을 피하는 최적화 기법입니다.

  • SetName() 메서드는 입력받은 이름이 기존의 NameString과 다르면, 기존 값을 초기화하고 새로운 값을 설정합니다. 이는 불필요한 변경을 방지하는 데 도움이 됩니다.

이러한 메서드들이 존재한다는 사실은 잘 설계된 함수 구조를 반영하여, 상태 변경의 모호성을 줄이는 데 유리합니다.

만약 보다 구체적인 설명이나 논의가 필요하시면 관련 포럼이나 문서에서 GetterSetter의 구현 철학에 관한 주변 자료를 참고하실 수 있습니다.

현재 유사한 질문으로는 다음의 링크를 참고하실 수 있습니다:
- 8강 Getter Setter 에 대한 질문이 있습니다.

이와 관련하여 더욱 깊이 있는 답변이나 설명이 필요하시다면, 추가적으로 질문을 남겨 주시면 강사님께서 도와드릴 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김태훈님의 프로필 이미지
김태훈

작성한 질문수

질문하기