我写了以下代码:
#include<iostream>
using namespace std;
class foo {
private:
int i;
public:
foo(): i(1) { }
friend int func1(int i) {
return 0;
}
friend int func2(foo &f) {
return f.i;
}
};
int main()
{
foo f;
cout << func2(f) << endl;
cout << func1(1) << endl;
return 0;
}
但它无法编译并出现以下错误:
ss.cpp: In function ‘int main()’:
ss.cpp:28:17: error: ‘func1’ was not declared in this scope
当我删除这一行时:
cout << func1(1) << endl;
编译成功
这是否意味着如果我想在类中定义友元函数并在全局命名空间中调用它,它必须与该类有一些关系?如果是这样,详细规则是什么?
我的编译器是g ++ - 4.7.2