在这里,如果我重命名命名空间,我还必须记住查看其余代码,并进行所有必要的更改.有没有这样的词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)
前缀::是指全局命名空间的位置.