我想寫一個庫,我有一些模板功能,其中一些是輔助功能,所以我不希望我的用戶有權訪問它們。一些基本的代碼可能是隱藏模板助手功能 - 靜態成員或無名命名空間
//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
類,並將這些函數封裝爲私有/公共靜態函數。
任何更好的解決方案將不勝感激。
菲爾
我建議改變'namespace'到'class'並將所有函數設置爲'static',然後將'helper'設置爲'private'。 – neuront