템플릿 코드를 여러 파일로 나누기
컴파일러는 소스 파일을 컴파일하는 과정에서
클래스 템플릿과 메서드를 사용하는 부분이 나올때마다,
이에 대한 정의 코드를 반드시 참조해야 한다.
C++에서는 이를 위해 다음과 같은 메커니즘을 제공한다.
1. 클래스 템플릿 정의에 메서드 정의 함께 적기
메서드 정의 코드를 템플릿을 정의하는 모듈 인터페이스 파일에 직접 작성할 수 있다.
이렇게 했을 때,
템플릿을 사용하는 다른 소스 파일에서 이 모듈을 임포트하게 되면,
컴파일러는 이에 관련된 모든 코드를 참조하게 된다.
앞서 포스팅한 Grid클래스 예제가 바로 이렇게 처리된다.
2. 메서드 정의를 다른 파일에 적기
또 다른 방법은 클래스 템플릿의 메서드 정의 코드를 다른 모듈 인터페이스 파티션 파일에 적는 것이다.
그러면 이 클래스 템플릿 정의를 별도 파티션에 둬야 한다.
예를 들어 Grid 클래스 템플릿에 대한 기본 모듀류 인터페이스 파일은 다음과 같다.
export module grid;
export import :definition;
export import :implementation;
이렇게 하면 두 모듈 파티션(definition과 implementation)을 입포트하고 익스포트한다.
이 클래스 템플릿 정의는 definition 파티션에 정의된다.
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
템플릿 매개변수 (0) | 2025.06.23 |
---|---|
템플릿에 사용할 타입의 요건 (1) | 2025.06.20 |
템플릿 선택적 인스턴스화, 명시적 인스턴스화 (0) | 2025.06.18 |
생성자에 의한 템플릿 인자 유추 과정 (0) | 2025.06.12 |
T{} 영초기화 구문과 템플릿화 (0) | 2025.06.10 |