假設我有一個頭文件中聲明兩個模板功能:如何隱藏實施幫手模板?
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 2011-05-03 12:35:49
@AtoMerZ是的,你可以叫它;名稱'helper'將在包含頭文件的任何源文件中定義。它應該是隱藏的,所以只有'func1'和'func2'知道它存在,而其餘的程序不會。 – Jesper 2011-05-03 12:38:49
@Jsper,我推薦John Dibling的方法。 – atoMerz 2011-05-03 12:40:49