我对下面的代码有两个问题:
namespace A { class window; }
void f(A::window);
namespace A
{
class window
{
private:
int a;
friend void ::f(window);
};
}
void f(A::window rhs)
{
std::cout << rhs.a << std::endl;
}
1)为什么我需要通过执行 ::f(window) 将窗口类中的成员函数 f 限定为全局?
2)为什么在这种特殊情况下我需要预先声明函数 f(A::window) ,而当类没有在命名空间内定义时,可以在函数被声明为友元之后声明函数。