내가 헤더 파일에 선언 된 두 개의 템플릿 함수가 있다고 가정하자 :구현 도우미 템플릿을 숨기는 방법은 무엇입니까?
template <typename T> void func1(const T& value);
template <typename T> void func2(const T& value);
그리고 이러한 기능의 구현 (또한 헤더 파일이 아닌 소스 파일에서, 그들은 템플릿 때문에이) 일부를 사용하는 가정 구현 도우미 함수는 템플릿이기도합니다.
template <typename T> void helper(const T& value) {
// ...
}
template <typename T> void func1(const T& value) {
// ...
helper(value);
}
template <typename T> void func2(const T& value) {
// ...
helper(value);
}
헤더 파일을 포함하는 모든 소스 파일에서 도우미 함수가 표시됩니다. 도우미 기능은 구현 세부 사항이기 때문에 나는 그것을 원하지 않습니다. 도우미 기능을 숨기는 방법이 있습니까?
눈에 띄는 것은 무엇입니까? 전화 할 수있는 것처럼? – atoMerz
@AtoMerZ 예, 호출 할 수 있습니다. 'helper'라는 이름은 헤더 파일을 포함하는 모든 소스 파일에 정의됩니다. 숨겨져 있어야만 func1과 func2만이 존재한다는 것을 알 수 있고, 프로그램의 나머지 부분은 존재하지 않는다. – Jesper
@Jsper, John Dibling의 접근 방식을 권하고 싶습니다. – atoMerz