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

问题描述 投票:0回答:2

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

header file:
class A
{
    ....
    struct B
    {
    ....
    }
    int f(); 
    B* g();
}

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

错误是“未知类型名称'B'”,但我的实际代码有更多详细信息。

c++ class private-members
2个回答
3
投票
B*  A::g(){...}

[BA外部不可见。

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

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


1
投票

或者可以使用尾随返回类型的其他答案

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

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

© www.soinside.com 2019 - 2024. All rights reserved.