기존 프로그래밍 작성 관행은
class의 경우 선언부는 .h file 에 정의부는 .cpp 파일에 작성하였다.
그러나 Template의 경우 통상적으로 그렇게 구분해서 사용할 수가 없고, 선언과 정의를 하나의 파일에 작성해야한다.
또, 보통 그렇게 사용한다. 다음처럼...
그러나 방법이 아주 없는것은 아닌데... 바로 .inl 파일을 사용하는 방법이다.
먼저, .inl 파일의 용도는 인라인 함수들은 헤더 파일에 기록하지 않고 인라인 함수용 파일을 따로 만들어
작성하고 관리 하기 위해 쓰인다. 그 때 사용하는 파일 확장자가 .inl 이다.
자 그럼! 분리해보자.
다음은 정의부이다.
이렇게 쓰면 된다. ㅎㅎㅎ
참고로, 이렇게 하는 방법은 앞서 거론했다싶이 일반적이지 않지만
일부 라이브러리나 3D 상용엔진에서는 저렇게 쓰기도 한다고 한다.
class의 경우 선언부는 .h file 에 정의부는 .cpp 파일에 작성하였다.
그러나 Template의 경우 통상적으로 그렇게 구분해서 사용할 수가 없고, 선언과 정의를 하나의 파일에 작성해야한다.
또, 보통 그렇게 사용한다. 다음처럼...
// 선언부
template<typename T>
class Queue
{
public:
// 초기화 한다.
void Clear();
public :
T m_Data[100];
};
// 정의부
template < typename T >
void Queue<T>::Clear()
{
memset( m_Data, 0, sizeof(T)*100);
} |
그러나 방법이 아주 없는것은 아닌데... 바로 .inl 파일을 사용하는 방법이다.
먼저, .inl 파일의 용도는 인라인 함수들은 헤더 파일에 기록하지 않고 인라인 함수용 파일을 따로 만들어
작성하고 관리 하기 위해 쓰인다. 그 때 사용하는 파일 확장자가 .inl 이다.
자 그럼! 분리해보자.
// 선언부
template<typename T>
class Queue
{
public:
// 초기화 한다.
void Clear();
public :
T m_Data[100];
};
// include inline file
#include "queue.inl" |
다음은 정의부이다.
// queue.inl 파일
// 정의부
template < typename T >
void Queue<T>::Clear()
{
memset( m_Data, 0, sizeof(T)*100);
} |
이렇게 쓰면 된다. ㅎㅎㅎ
참고로, 이렇게 하는 방법은 앞서 거론했다싶이 일반적이지 않지만
일부 라이브러리나 3D 상용엔진에서는 저렇게 쓰기도 한다고 한다.
'비공개' 카테고리의 다른 글
memset 무심결에 잘 모르고 썻던 부분 (0) | 2011.08.16 |
---|---|
UNICODE와 MBCS 호환성 및 사용법 (0) | 2011.08.11 |
VS2010 코딩시 유의점( 템플릿#1 ) (0) | 2011.08.08 |
VS2010 코딩시 유의점( 네이밍#1 ) (0) | 2011.07.20 |
Google C++ Style Guide (구글 C++ 엔지니어들의 코딩 스타일) (0) | 2011.07.14 |