当外部命名空间具有同名成员时,访问未命名命名空间的成员
这是测试代码
extern "C" {int printf(const char *, ...);}
namespace PS
{
int x = 10; // A
// some more code
namespace {
int x = 20; // B
}
// more code
}
int main()
{
printf("%d", PS::x); // prints 10
}
有没有办法访问 main
内部(未命名)命名空间的 x
?
我不想更改 PS
内的代码。如果代码看起来非常不切实际,我们深表歉意。
PS:我经常使用 x
这个名字。
Here is the test code
extern "C" {int printf(const char *, ...);}
namespace PS
{
int x = 10; // A
// some more code
namespace {
int x = 20; // B
}
// more code
}
int main()
{
printf("%d", PS::x); // prints 10
}
Is there any way to access inner(unnamed) namespace's x
inside main
?
I dont want to change code inside PS
. Apologies if the code looks highly impractical.
P.S: I tend to use the name x
quite often.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可以。指定命名空间的唯一方法是通过名称,而内部命名空间没有名称。
假设您无法重命名这两个变量,您可以重新打开内部命名空间并添加一个不同名称的访问器函数或引用:
No. The only way to specify a namespace is by name, and the inner namespace has no name.
Assuming you can't rename either variable, you could reopen the inner namespace and add a differently-named accessor function or reference:
一种方法是添加此代码:
然后您可以访问您想要的内容:
演示: http://ideone.com/peqEs< /a>
One way is to add this code:
and then you can access what you want:
Demo : http://ideone.com/peqEs