为什么我不能拥有某些私有会员功能?

Why can't I have certain private member functions?

本文关键字:功能 不能 拥有 为什么      更新时间:2023-10-16

给定一个类,为什么我们可以实现某些私有成员函数,而不能实现其他私有成员函数?例如,见下文:

header file:
class A
{
....
struct B
{
....
}
int f(); 
B* g();
}
cpp file:
int A::f(){...} // will compile
B*  A::g(){...} // will not compile!

错误是"未知类型名称'B'",但我的实际代码有更多细节。

B*  A::g(){...}

BA之外不可见。

A::B*  A::g(){...}

这与私人成员无关。由于B是在A内声明的,因此它不在全局范围内,因此您需要指定您所指B

对于另一个答案,您可以使用尾随返回类型

auto A::g() -> B* {...}

A::g()之前,您必须使用A::B.A::g()后,您可以简单地使用B.