この質問が以前に要求されているかどうかは不明です。私は周りを探索して、私のシナリオのための正確な答えを見つけることができませんでしたが、私はそれを見逃しているかもしれません。(匿名)名前空間、関数、およびヘッダーファイル
問題は:私は名前空間の中で関数を定義したい、.cppファイルで
namespace Foo{
void SomeFunc();
void SomeOtherFunc(int);
}
:私は、ヘッダー・ファイル内の名前空間、およびヘッダでその名前空間内のいくつかの関数プロトタイプを持っていますまた、彼らはすべて匿名の名前空間に依存している乱数発生器にある程度の保護を提供する:
namespace Foo{
namespace{
RNG rando = new RNG();
}
void SomeFunc(){
//implementation
}
void SomeOtherFunc(){
//implementation
}
}
私が午前の問題は、私が機能までのヘッダファイルの試合でプロトタイプという保証がないことですcppファイルで定義します。 namespace {}コードブロックのすべては、名前空間に新たに追加されたものである可能性があります。
上記のコード例では、SomeOtherFunc()はint型の引数なしで実装されていますが、宣言には何らかの引数が必要です。実際には、私はSomeOtherFunc()の署名をオーバーロードしているようです。
私はcppのファイルに次のように使用することもできます
namespace Foo{
namespace{
RNG rando = new RNG();
}
}
void Foo::SomeFunc(){
//implementation
}
void Foo::SomeOtherFunc(int){
//implementation
}
コンパイラは、私が好きな機能宣言と実装との関係を強化するようです。しかし、関数は匿名の名前空間内のデータにアクセスできないように見えます。
ここに何か不足していますか?この実装に存在すると感じる問題を解決するために何かできることはありますか?私は(匿名の)名前空間の使用にあまり精通していないので、基本的な場合は謝罪します。
すばらしい返信をいただきありがとうございます。私はそれがわかっていましたが、私は昨夜、気を取られて、チェックする機会を得られませんでした。だから私は仕事中の昼休み中にここで尋ねると思った。 – cottog