Nat*_*iel 8 c++ scope namespaces
我正在使用STL开发一个小型的个人C++项目.我不喜欢std::在我的头文件中占有" ",因为我发现它阻碍了可读性,但同时我不想通过放入using namespace std头文件来引起自己的问题.
所以我想知道如果有一种方法来限制的范围内using声明,因此它适用于我的头文件的内容,但并不适用于包含它的文件.我试过这样的各种事情
{
using namespace std;
// header file contents here
}
Run Code Online (Sandbox Code Playgroud)
但似乎在函数定义之外不允许以这种方式引入范围.有没有办法做我想要的事情?
请注意:我真的不想讨论这是否是一个好主意,我只是想知道它是否可以完成.
小智 5
是的,我认为可以做到.
为了实现这一点,您需要构建自己的命名空间.我写了一些按预期工作的代码.
头文件看起来像:
#include <iostream>
namespace my_space {
using namespace std;
void mprint ()
{
/*
* This is working. It means we can access
* std namespace inside my_space.
*/
cout << "AAA" << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
实现文件如下:
#include "my_header.h"
int main ()
{
/*
* Working Fine.
*/
my_space::mprint();
/*
* It gives a compile time error because
* it can't access the std namespace
*/
cout << "CHECK" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果这不符合您的要求,请告诉我.我们可以解决这个问题.