ヘッダーファイルにいくつかの関数を定義して、それらを同じヘッダーファイルで使用することはできますか?ヘッダーファイルのメンバでない関数を非表示にする
例えば、(データ構造に固有の)いくつかの一般的なヘルパー関数を定義してから、それらの関数を使用する同じヘッダーにいくつかのデータ構造を定義できますか?
例:
template<class T>
void Swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
しかし、私はSwap()
が同じ名前を持つ他の機能に干渉したくありません。
伝統的に、名前空間details
を実装するために使用されている私はそれプライベートメソッド作ることができますが、その後、私は同じ実装でそれを使用するすべてのクラスを提供したり、それらに友人のクラスを作る必要があるだろう...
他のスワップ関数と干渉するスワップについては、それが名前空間が発明された理由です。私が知る限り、ヘッダファイル内の関数は、クラスや構造体の内部で非公開にすることによってのみ非表示にすることができます。あなたはこの関数だけをprivateとして構造体を作成し、あなたが作成したクラスをフレンドクラスとして指定することができます。 – leetNightshade