C++私有对象的公开成员

C++ exposing member of private object

本文关键字:成员 对象 C++      更新时间:2023-10-16

在这种情况下:

class A
{
private:
B b;
};
class B
{
private:
C c;
};
class C
{
public:
void func();
};

有没有办法让 func(( 对 A 可见,还是我必须在 B 中使用中间调用?

不,因为cBprivate,所以A的实例无法访问它。

您必须向B添加适当的访问器。

这可以转发func呼叫,例如void B::func() { return c.func(); }

或者,它可以直接公开c,就像C& B::getC() { return c; }然后b.getC().func()一样。

只有你可以决定B应该"让"其他类用它的东西做什么。