同僚と口論になりました。
名前空間のメンバーであるクラスがあります(これは他の名前空間のメンバーですが、ここでは重要ではないと思います)。ヘッダー ファイルでは、次のようにクラス ブロックを名前空間ブロックに入れ子にします。
namespace NS {
class A {
void method();
// ...
};
}
そして、これが .cpp ファイルであり、私たちの議論の主題です。私が書いた:
using namespace NS;
void A::method() {
// ...
}
同僚は、私が「using」ディレクティブを不適切に使用していて、ここでヘッダーと同じ NS { ... } を使用するべきだったと私に言いました。(彼はコードを変更し、いくつかのコンパイラ エラーを取得しましたが、using ディレクティブを削除し、コードを NS { ... } で囲むことによってのみ取り除くことができました。)
私の要点は、「using」は名前の検索に影響するだけなので、NS名前空間でAが検索されるため、私のアプローチは正しいです。彼のコンパイラの問題は、その「using」ディレクティブではなく、他の何かによって引き起こされました。
誰が正しいのか、その理由は?
追加:皆さん、「私はこれ (またはあれ) を何度もやった」などと答えないでください。あまり役に立ちません。ここで理論が必要です。これまたはそのアプローチがなぜ正しいか、または間違っているかです。