访问匿名命名空间内的变量 (c++)
Accessing the variable inside anonymous namespace (c++)
我有以下代码,但我不知道如何在此设置中访问匿名命名空间内的 x。请告诉我怎么做?
#include <iostream>
int x = 10;
namespace
{
int x = 20;
}
int main(int x, char* y[])
{
{
int x = 30; // most recently defined
std::cout << x << std::endl; // 30, local
std::cout << ::x << std::endl; // 10, global
// how can I access the x inside the anonymous namespace?
}
return 0;
}
You can't!
您不能通过名称访问命名空间的成员,因为它没有成员。
它是匿名的。
您只能访问那些已经被拉入范围的成员。
您必须从同一匿名范围内的函数访问它:
#include <iostream>
int x = 10;
namespace
{
int x = 20;
int X() { return x; }
}
int main(int x, char* y[])
{
{
int x = 30; // most recently defined
std::cout << x << std::endl; // 30, local
std::cout << ::x << std::endl; // 10, global
std::cout << X() << std::endl; // 20, anonymous
// how can I access the x inside the anonymous namespace?
}
return 0;
}
我有以下代码,但我不知道如何在此设置中访问匿名命名空间内的 x。请告诉我怎么做?
#include <iostream>
int x = 10;
namespace
{
int x = 20;
}
int main(int x, char* y[])
{
{
int x = 30; // most recently defined
std::cout << x << std::endl; // 30, local
std::cout << ::x << std::endl; // 10, global
// how can I access the x inside the anonymous namespace?
}
return 0;
}
You can't!
您不能通过名称访问命名空间的成员,因为它没有成员。
它是匿名的。
您只能访问那些已经被拉入范围的成员。
您必须从同一匿名范围内的函数访问它:
#include <iostream>
int x = 10;
namespace
{
int x = 20;
int X() { return x; }
}
int main(int x, char* y[])
{
{
int x = 30; // most recently defined
std::cout << x << std::endl; // 30, local
std::cout << ::x << std::endl; // 10, global
std::cout << X() << std::endl; // 20, anonymous
// how can I access the x inside the anonymous namespace?
}
return 0;
}