如何在声明当前命名空间时引用它?有没有像"self"/"this"这样的词?

How do I refer the current namespace while declaring it? Is there any word like "self"/"this"?

本文关键字:self this 有没有 声明 命名空间 引用      更新时间:2023-10-16

在这里,如果我重命名名称空间,我还必须记得查看其余的代码,并进行所有必要的更改。是否有像self, thiscurrent这样的词来指代当前的命名空间?

namespace myNamespace {
  int myInt;
  void myFunc() {
    myNamespace::myInt = 66;
  }
};

为什么要引用当前的名称空间?没有必要这样做,你可以很容易地写:

namespace myNamespace {
  int myInt = 33;
  void myFunc() {
    myInt = 33;
  }
};

无论在那里声明什么变量(例如全局myInt),默认情况下都将使用此范围的变量。

但是,如果您想重命名,您可以使用IDE技术,如替换或重构。

不,没有,但如果你真的想做这样的事情,你可以假装。

namespace myNamespace {
  namespace _ns = ::myNamespace;
  int myInt;
  void myFunc() {
    _ns::myInt = 66;
  }
}

如果你改变了myNamespace,你只需要改变_ns来匹配它

另外,命名空间后面的分号也是多余的。

问得好。不,没有这样的。

此外,要注意myNamespace::myInt在嵌套名称空间的情况下甚至不是明确的(假设您遇到了namespace myNamespace { namespace myNamespace { … } }的复杂情况)。为了安全起见,您需要使用完全限定的名称空间:

::myNamespace::myInt = 33;

其中前缀::为全局命名空间