在头文件中使用"using"

Dyi*_*oul 5 c++ namespaces using

我明白了,我不应该在头文件中使用它:

using namespace foo;
Run Code Online (Sandbox Code Playgroud)

因为它为任何使用我的头文件的人带来了全局范围内的命名空间foo.

如果我在自己的命名空间中执行此操作,是否可以防止这种情况发生?例如这样:

namespace my_lib
{
    using namespace foo;

    // my stuff
    // ...
}
Run Code Online (Sandbox Code Playgroud)

现在使用命名空间foo应该限制在命名空间my_lib的范围内,对吧?

Naw*_*waz 8

是.这比using namespace foo在全球范围内使用要好.

如果你使用foo::name语法,那就更好了.

现在使用命名空间foo应该限制在命名空间my_lib的范围内,对吧?

是.它将命名空间foo中名称空间中的所有名称带入my_lib,这可能会导致名称冲突my_lib.这就是为什么foo::name最优选的方法.

  • 我不同意总是使用完整的命名空间名称是合适的。在作用域中使用别名和引入名称极大地简化了代码。如果`my_lib` 的用户几乎总是需要使用`foo`,那么结合他们的作用域是有意义的。 (2认同)