这是测试代码
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
中的代码。如果代码看起来非常不切实际,我们深表歉意。
P.S:我倾向于经常使用名称 x
。
最佳答案
没有。指定命名空间的唯一方法是通过名称,内部命名空间没有名称。
假设您不能重命名任何一个变量,您可以重新打开内部命名空间并添加一个不同名称的访问器函数或引用:
namespace PS {
namespace {
int & inner_x = x;
}
}
printf("%d", PS::inner_x);
关于c++ - 当外部命名空间具有同名成员时访问未命名命名空间的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412537/