在以下情况下删除朋友类的依赖性

问题描述 投票:0回答:1
class foo
{
    bar b;

    someFunction()
    {
        b.alphaObj->someFunctionOfAlpha();
    }
};


class bar
{
    friend class foo;
    // many more friends

private:
    alpha *alphaObj;
};

我如何删除朋友依赖关系而又不让私有成员使用getter和setter方法。我知道朋友类可以帮助增强封装性,但是我的类中定义了很多朋友类,这些私有类向所有人公开。因此,我正在考虑一种更好的方法,我们将不胜感激。

c++ friend ooad
1个回答
0
投票

与您的friend独立发行此>

b.alphaObj->someFunctionOfAlpha();

不是最佳设计。您应该致电:

b.someFunctionOfAlpha();

现在也很明显如何删除朋友:

class bar
{
public:
    void someFunctionOfAlpha() { alphaObj->someFunctionOfAlpha(); }

private:
    alpha *alphaObj;
};
© www.soinside.com 2019 - 2024. All rights reserved.