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