我试图在命名空间之外定义一个类朋友函数,如下所示:
namespace A{
class window{
private:
int a;
friend void f(window);
};
}
void f(A::window rhs){
cout << rhs.a << endl;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说有歧义.有两个候选人void A::f(A::window);和void f(A::window).所以我的问题是:
1)如何使全局函数void f(A::window rhs)成为类A :: window的朋友.
编辑:(阅读答案后)
2)为什么我需要通过操作来限定窗口类中的成员函数f是全局的::f(window)?
3)为什么我需要在这种特殊情况下预先声明函数f(A :: window),而当该类不是在命名空间中定义时,它是在函数被声明为朋友之后声明的函数的okey.