본문 바로가기

IT/c, c++

Template 코드의 선언과 정의는 하나의 파일에 넣자!

일반적인 함수는 '선언(declaration)'과 '정의(definition)'를 파일로 분리하여 컴파일할 수 있다.  이렇게 하면 좋은 점은 컴파일 시간을 줄일 수 있다는 것이다.  하지만 Template를 사용할 경우에는 그렇지않다.  

 

 Template을 사용하여 구현한 코드는 '선언'과 '정의'를 같은 파일에 넣어야 한다. 왜냐하면 실제로 Template을 사용하는 시점에서 코드가 인스턴스화되기 때문이다.  즉, 사용된 시점에서 컴파일러가 '선언'뿐만이 아니라 '정의'까지 알아야하기 때문이다.

 

 그렇다면, 정말로 파일로 분리하여 구현하는 방법은 없는 것일까? 아니다.  실제로는 아주 간단하게 해결할 수도 있다.  Template를 사용하는 파일에서 선언이 있는 파일(.h 파일)과 정의가 있는 파일(.cpp 파일) 모두를 포함, 즉 include 하면 된다.  하지만, 이렇게 되면 자신은 괜찮겠지만 자신의 코드를 다른 사람이 사용할 경우에 분명히 문제가 된다.  cpp파일을 include 할 사람이 얼마나 되겠는가. 물론, export 키워드를 사용해서 해결할 수도 있다.  하지만 이 키워드 불편하다.

 

 그러니, 그냥 하나의 파일에 '선언'과 '정의'를 모두 넣기를 추천한다!

'IT > c, c++' 카테고리의 다른 글

[c] 소켓 생성 기본  (0) 2014.01.23
[c] ASKII 코드 출력  (0) 2014.01.23
[c] IP Setting  (0) 2014.01.23
[c] File 입출력  (0) 2014.01.23
[c,c++] malloc 와 new 의 차이  (0) 2014.01.23