프로그래밍 언어/C & C++ 정리

템플릿 코드를 여러 파일로 나누기

뽀또치즈맛 2025. 6. 22. 13:04

템플릿 코드를 여러 파일로 나누기


컴파일러는 소스 파일을 컴파일하는 과정에서
클래스 템플릿과 메서드를 사용하는 부분이 나올때마다,
이에 대한 정의 코드를 반드시 참조해야 한다.

C++에서는 이를 위해 다음과 같은 메커니즘을 제공한다.

1. 클래스 템플릿 정의에 메서드 정의 함께 적기


메서드 정의 코드를 템플릿을 정의하는 모듈 인터페이스 파일에 직접 작성할 수 있다.

이렇게 했을 때,
템플릿을 사용하는 다른 소스 파일에서 이 모듈을 임포트하게 되면,

컴파일러는 이에 관련된 모든 코드를 참조하게 된다.

앞서 포스팅한 Grid클래스 예제가 바로 이렇게 처리된다.

2. 메서드 정의를 다른 파일에 적기


또 다른 방법은 클래스 템플릿의 메서드 정의 코드를 다른 모듈 인터페이스 파티션 파일에 적는 것이다.
그러면 이 클래스 템플릿 정의를 별도 파티션에 둬야 한다.
예를 들어 Grid 클래스 템플릿에 대한 기본 모듀류 인터페이스 파일은 다음과 같다.

export module grid;

export import :definition;
export import :implementation;

 
이렇게 하면 두 모듈 파티션(definition과 implementation)을 입포트하고 익스포트한다.
이 클래스 템플릿 정의는 definition 파티션에 정의된다.