This question already has answers here:
What's the scope of inline friend functions?
(5个答案)
7个月前关闭。
在编译以下代码时:
编译器给我一个错误:
这是为什么?
(5个答案)
7个月前关闭。
在编译以下代码时:
class A {
A() = default;
public:
friend A getA() {
return A();
}
};
int main()
{
A a = getA();
}
编译器给我一个错误:
这是为什么?
最佳答案
因为无法通过名称查找找到friend function getA
。
(强调我的)
ADL也无法找到getA
,(它没有参数)。您需要在 namespace 范围内提供声明。例如
class A;
A getA();
class A {
A() = default;
public:
friend A getA() {
return A();
}
};
09-25 21:44