相关疑难解决方法(0)

为什么"使用命名空间X;" 在类/结构级别内是不允许的?

class C {
  using namespace std;  // error
};
namespace N {
  using namespace std; // ok
}
int main () {
  using namespace std; // ok
}
Run Code Online (Sandbox Code Playgroud)

编辑:想知道背后的动机.

c++ namespaces using language-lawyer

77
推荐指数
4
解决办法
5万
查看次数

仅在当前类上使用"范围"声明?

是否有可能有一个using范围仅限于一个类的指令?

请注意,我想要"使用"的内容不包含在当前类的父级中.

为简单起见,假设以下例子:

#include<vector>

class foo
{
using std::vector; //Error, a class-qualified name is required
}
Run Code Online (Sandbox Code Playgroud)

另一个有趣的事情是,如果using包含指令,如果包含头:

MyClassFoo.h:
#include<vector>

using std::vector; //OK
class foo
{

}
Run Code Online (Sandbox Code Playgroud)

并在

NewHeader.h
#include "MyClassFoo.h"
...
Run Code Online (Sandbox Code Playgroud)

我怎么能阻止" using std::vector"在这里可见?

c++ using using-directives c++11

7
推荐指数
1
解决办法
2372
查看次数