テンプレート関数がいくつかあるライブラリを作成しようとしています。そのうちのいくつかはヘルパー関数なので、ユーザーにアクセスさせたくありません。いくつかの基本的なコードはテンプレートヘルパー関数の非表示 - 静的メンバーまたは名前のないネームスペース
//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'にすべての関数を静的にし、' helper'を 'private'に入れます。 – neuront