일부 템플릿 함수가있는 라이브러리를 작성하려고합니다. 일부 함수는 도우미 함수이므로 사용자에게 액세스 권한을 부여하지 않으려합니다. 일부 기본 코드는템플릿 도우미 함수 숨기기 - 정적 멤버 또는 이름없는 네임 스페이스
//mylib.h
namespace myfuncs
{
template<class T>
void helper (T input, int extrainformation)
{
//do some usefull things
}
template<class T>
void dostuff(T input)
{
int someinfo=4;
helper(input, someinfo);
}
}
도우미 기능을 숨겨서 라이브러리 사용자가 직접 호출 할 수 없도록 할 수 있습니까? 명명되지 않은 네임 스페이스가 작업을 수행 할 수 있다고 생각했지만 템플릿을 사용하기 때문에 헤더와 구현 파일간에 함수 선언과 본문을 나눌 수 없습니다. 이름없는 네임 스페이스를 헤더 파일에 두는 것은 아무 쓸모가없고 나쁜 스타일입니다. 내가 생각할 수있는 유일한 방법은 mylib
클래스를 만들고 함수를 private/public static 함수로 캡슐화하는 것입니다.
더 좋은 해결책은 많이 주시면 감사하겠습니다.
필 그것을 할
나는 변화를 제안'namespace' 'class'에 모든 함수를 정적으로 만들고,'helper'를'private'에 넣으십시오. – neuront