5
using namespace
のような構造で、インポートされたシンボルが名前空間の本文(または本文)の外側に見えませんか?C++は外部からアクセス可能にせずに他の名前空間のシンボルを使用します
この例では、whatever
とother_namespace
のすべてのシンボルには、Foo::<name_of_symbol>
でもアクセスできます。そのようなことが起こらないようにしたいと思います。
namespace Foo {
using namespace whatever;
using namespace other_namespace;
// some definitions
}
完全な例として、このプログラムは有効です。目的のセマンティクスを持つusing namespace
の代替品が存在し、使用された場合、それはそうではありません。
namespace a {
int func(int x) {
return 10;
}
}
namespace b {
using namespace a;
}
namespace c {
int do_thing(int x) {
return b::func(57);
}
}
関数スコープの 'using'宣言? – Sneftel
@Sneftel私は、すべての関数が同じ名前空間のセットを使用していて、恐れがあると感じています。 –
また、不要な 'using namespace'ディレクティブを.cppファイルまたはprivate .hファイルに分離することもできますそれは消費コードには見えません。 –