class foo
{
    bar b;

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


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

private:
    alpha *alphaObj;
};


如何删除朋友依赖关系,而又不使用getter和setter公开私有成员。
我知道朋友类可以帮助增强封装性,但是我的类中定义了很多朋友类,将私有成员暴露给所有人。因此,我正在考虑一种更好的方法,任何帮助都将受到赞赏。

最佳答案

与您的friend问题无关,需要撰写此文件

b.alphaObj->someFunctionOfAlpha();


不是最好的设计。您应该致电(*):

b.someFunctionOfAlpha();


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

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

private:
    alpha *alphaObj;
};


(*)该指南有一个名称,我暂时无法找到它。通常,调用方法应类似于:“这样做!”。调用方法不应类似于“向我展示您的内部知识,以便我可以做我想做的事”。

10-08 00:31