본문 바로가기

Programming/Implementation

(2)
Macro 분기 vulkan 래핑 작업을 하던 중 로그 출력 및 에러 처리에 대한 필요성이 생겨 어떻게 구현할 지 고민했다. 생각해본 구현 요구사항은 다음과 같다.    1. 간단히 사용할 수 있어야 한다.    2. std library의 의존성을 최소화 해야 한다.    3. 어떤 파일의 몇 번째 줄에서 에러가 발생했는지 출력 할 수 있어야 한다.    4. 에러 혹은 로그의 수준에 따라 출력 포맷을 다르게 할 수 있어야 한다.    5. 에러 코드의 출력 여부를 선택할 수 있어야 한다. 요구사항 2 에 의해 선언부와 정의부를 분리해야 하므로, inline 및 template를 사용할 수 없다.요구사항 3 에 의해 매크로를 사용해야 한다. (__FILE__, __LINE__ 사용)  - 호출 한 시점의 파일과 줄 번..
C++로 GetComponent<T>() 구현하기 유니티에서 컴포넌트를 찾아주는 GetComponent() 를 C++로 어떻게 구현할 수 있을지 고민했다. 먼저 GetComponent 함수의 형태를 보면 인자가 없으며 template를 사용한다는 것을 알 수 있고,함수의 결과로 컴포넌트를 찾아서 형변환하여 포인터 혹은 레퍼런스로 반환할 것이라는 예상을 할 수 있다. 그런데, 레퍼런스는 선언과 참조를 같이 해야하므로 사용할 수 없다. 따라서, 포인터로 component를 저장한다. template T* getComponent() { ... return static_cast(...);} 그럼, 여기서 "컴포넌트를 어떻게 구분하여 찾을 것인가?" 를 고민해봐야 한다. 객체는 다수의 컴포넌트를 가질 수 있으므로 삽입, 삭제, 검색 속도가 빠르..