1

我有一AdjacencyList堂课,我希望所有的图形算法都与它分开。假设所有算法都是函子并且派生自GraphAlgorithm抽象基类。我如何使它工作?

我目前在想,

class AdjacencyList
{
    // ...
    friend class GraphAlgorithm;
    // ...
};

但它是否允许GraphAlgorithm 的子类访问AdjacencyList的私有成员?

欢迎任何其他方法。

4

2 回答 2

0

但它是否允许 GraphAlgorithm 的子类访问 AdjacencyList 的私有成员?

不,不是的。友谊不是传递的。

无论如何,每当您需要friend声明时,您都应该将其视为代码异味并重新考虑您的设计。

我宁愿在 中使用 getter,AdjacencyList这样 aGraphAlgorithm可以对它可以从 的方法访问的成员进行操作AdjacencyList

于 2012-06-07T07:21:12.177 回答
0

您可能想查看策略模式:“定义一系列算法,封装每个算法,并使它们可互换。策略让算法独立于使用它的客户端而变化。”

例如访问dofactory Wiki上的策略模式

于 2012-06-07T08:55:59.857 回答