这里有一些代码,显示了奇数:
namespace ns
{
typedef int int_type;
class classus {
public:
int a = 0;
};
void print(classus c){
printf("a equals %i \n", c.a);
}
void print(int_type a){
printf("a equals %i \n", a);
}
}
int main(int argc, char* argv[])
{
ns::int_type a1 = 2;
ns::classus a2;
ns::print(a1); // this line wont work without explicit ns:: scope
print(a2); // this line works with or without explicit ns:: scope
}
这可以在 Visual Studio 2017 上构建和运行。Intellisense 对其也非常满意。
似乎包含在命名空间中的类的变量会污染整个行,使其具有该命名空间的作用域。这是一个 bug 还是一个特性?无论哪种方式,是否有关于此的文档......还没有找到任何文档。