1

クラスがあり、すべてのグラフアルゴリズムをクラスから分離しAdjacencyListたいと考えています。すべてのアルゴリズムがファンクターであり、抽象基本クラスから派生するとしましょう。どうすれば機能しますか?GraphAlgorithm

現在考えているのですが、

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

しかし、GraphAlgorithm のサブクラスがAdjacencyListのプライベート メンバーにアクセスできるようにしていますか?

他のアプローチは大歓迎です。

4

2 に答える 2

0

ストラテジーパターンを確認することをお勧めします。「アルゴリズムのファミリーを定義し、それぞれをカプセル化して、互換性を持たせます。ストラテジーにより、アルゴリズムは、それを使用するクライアントとは独立して変化します。」

例については、dofactoryWikiのStrategyPatternに アクセスしてください。

于 2012-06-07T08:55:59.857 に答える
0

しかし、GraphAlgorithm のサブクラスが AdjacencyList のプライベート メンバーにアクセスできるようにしていますか?

いいえ、違います。友情は推移的ではありません。

とにかく、宣言が必要なときはいつでも、friendそれをコードの匂いと見なして、設計を再考する必要があります。

のメソッドからアクセスできるメンバーを操作できるように、 AdjacencyListandにゲッターが必要です。GraphAlgorithmAdjacencyList

于 2012-06-07T07:21:12.177 に答える