如果我省略了这样的命名空间,请遵循这里的问题:
void f(window);
class window{
private:
int a;
friend void ::f(window);
};
void f(window rhs){
std::cout << rhs.a << std::endl;
}
我得到奇怪的行为:
friend void f(window);
编译时没有 f(window) 的前向声明,但是
friend void ::f(window);
才不是:
error C2039: 'f' : is not a member of '`global namespace''
有人可以解释它的原因吗?为什么 :: 会产生这种差异,如果我们无论如何都在全局命名空间中......
谢谢?