是否有任何方法可以使用"将#34; s成员拉入您的命名空间?

时间:2017-09-01 22:01:24

标签: c++ class namespaces using

我处于需要在另一个班级中引用一个班级的情况,而且我一直在做SomeClass::这个等等。有什么方法可以做类似于using namespace但类似的事情吗?

我试过了:

using MyClass; // Namespace qualified name is required.
using MyClass::; // Expected an identifier
using namespace MyClass; // Name must be a namespace name
using namespace MyClass::; // Name followed by :: must be a class or namespace name

我知道C ++中的一个新功能是继承基类功能,比如using BaseClass::BaseClass,似乎有很多方法可以使用using。我想知道我是否能做这类课程?实际上,如果它完全是静态的,那么使用命名空间而不是类可能是个好主意。

1 个答案:

答案 0 :(得分:1)

简短回答,

不,你不能。

长答案:

你的表情(有错误):

using MyClass; // Namespace qualified name is required.
using MyClass::; // Expected an identifier
using namespace MyClass; // Name must be a namespace name
using namespace MyClass::; // Name followed by :: must be a class or namespace name

:不行。是的,当然,scope resolution operator的一项工作是在某些命名空间范围内进行非限定名称查找搜索。但是,为了使类(在类或其派生类的范围之外)具有相同的行为,C ++必须回答至少两个问题:

  • 中声明的每个在其外部访问的名称都将进行访问检查。因此,在尝试在所谓的“类命名空间”中创建不合格的名称查找访问名称时,如何何时 检查?
  • 我们如何处理非静态成员