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

rsk*_*k82 22 c++ namespaces

在这里,如果我重命名命名空间,我还必须记住查看其余代码,并进行所有必要的更改.有没有这样的词self,this或者current引用当前的命名空间?

namespace myNamespace {
  int myInt;
  void myFunc() {
    myNamespace::myInt = 66;
  }
};
Run Code Online (Sandbox Code Playgroud)

Tam*_*ash 30

你为什么要攻击当前的命名空间?没有必要,你可以轻松地写:

namespace myNamespace {
  int myInt = 33;
  void myFunc() {
    myInt = 33;
  }
};
Run Code Online (Sandbox Code Playgroud)

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

但是,如果要重命名,可以使用替换或重构等IDE技术.


Fer*_*cio 22

不,没有,但是如果你真的想做那样的东西你就可以伪造它.

namespace myNamespace {
  namespace _ns = ::myNamespace;
  int myInt;
  void myFunc() {
    _ns::myInt = 66;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果更改myNamespace,则只需更改_ns即可进行更改.

此外,命名空间后面的分号是多余的.


Kon*_*lph 18

好问题.不,没有这样的事情.

此外,注意myNamespace::myInt在嵌套命名空间的情况下甚至不是明确的(假设你有一个复杂的情况namespace myNamespace { namespace myNamespace { … } }.为了安全起见,你需要使用完全限定的命名空间:

::myNamespace::myInt = 33;
Run Code Online (Sandbox Code Playgroud)

前缀::是指全局命名空间的位置.