给出一个类,为什么我们可以实现某些私有成员函数,而不能实现其他私有成员函数?例如,请参见下文:
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(){...}
[B
在A
外部不可见。
A::B* A::g(){...}
这与私人成员无关。由于B
是在A
内部声明的,因此不在全局范围内,因此您需要指定要引用的B
。
或者可以使用尾随返回类型的其他答案
auto A::g() -> B* {...}
A::g()
之前,您必须使用A::B
。在A::g()
之后,您可以简单地使用B
。