在头文件中使用 "using"
Use of "using" in header files
我明白了,我不应该在头文件中使用这个:
using namespace foo;
因为它将命名空间foo带入全局作用域,对于任何使用我的头文件的人。
如果我在自己的命名空间中这样做,我能防止这种情况发生吗?例如:
namespace my_lib
{
using namespace foo;
// my stuff
// ...
}
现在using命名空间foo应该被限制在命名空间my_lib的范围内,对吗?
是。这比在全局级别使用using namespace foo
要好。
如果使用foo::name
语法就更好了。
现在using命名空间foo应该被限制在命名空间my_lib的范围内,对吗?
是的。它将名称空间foo
中的所有名称都带到了名称空间my_lib
中,这可能会导致名称空间my_lib
中的名称冲突。这就是为什么foo::name
是最优选的方法。
是的,如果您这样做,那么它只是将所有名称从foo
带到my_lib
—正如其他人指出的那样,这可能是可取的,也可能不是可取的。
除了其他人所说的之外,我还观察到一件事,那就是你可以使用"命名空间内的using指令"的想法来模拟受类作用域限制的using指令。注意,这是非法的:
class C
{
using namespace boost; // for example
// ...
};
但是你可以这样做:
namespace C_Namespace {
using namespace boost;
class C
{
};
}
using C_Namespace::C; // bring C itself back into the global namespace
只是认为如果您真正想要的是能够定义某些东西(如类)而无需一直编写特定的命名空间前缀,则可能会发现它很有用。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在实现文件中,我们应该更喜欢"using namespace"指令还是将实现包装在命名空间 { } 中?
- 在C++头文件中放置 using 指令的位置
- 如何修复书'Programmin principles and practice Using C++'中的 FLTK 头文件?
- 头文件中可以包含"using namespace"语句吗?
- 如何在不使用"using"的情况下缩短C++头文件中的命名空间缩进?
- #include 指令和"using"语句的顺序在C++头文件的开头是否重要?
- 限制头文件中"using namespace"的范围
- 在头文件中使用 "using"