我处于一种情况,我需要在另一类中引用一个类,并且我一直在对此进行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的方法。我想知道我是否可以做这个类?实际上,如果 namespace 是完全静态的,那么最好使用 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

:将无法正常工作。是的,当然,scope resolution operator的工作之一是在某些 namespace 范围内进行不合格的名称查找。但是,要使类(在类或其派生类的范围之外)具有相同的行为,C++必须至少回答两个问题:
  • 在类中声明的每个在其外部访问的名称都将进行访问检查。因此,在尝试在所谓的“类命名空间”中进行不合格的名称查找访问名称时,应该如何进行和的访问检查时的和
  • 我们如何处理非静态成员?
  • 关于c++ - 有没有办法通过 “using”将类的成员拉入您的命名空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46008476/

    10-16 04:14