0

コンテナーを出力パラメーターとして受け入れるメソッドがある場合、リストをクリアするのは誰の責任ですか? (ある場合)たとえば、

bool GetResults(int nID, list<string>& results)
{
    .....
}

この場合、メソッド GetResults はリストをクリアする必要がありますか? それとも、発信者が自分のしていることを知っていると想定する必要がありますか? GetResults が出力リストをクリアすると、呼び出し元が複数の呼び出しにわたって結果を収集する努力が無効になる場合があります。たとえば、

list<string> results.

GetResults(1,results)

GetResults(17,results)
4

2 に答える 2

2

私の提案は、そのようなメソッドを作成して、出力イテレータを取るようにすることです。

template <typename OutputIterator>
OutputIterator GetResults(int nID, OutputIterator out)

これにより、結果をクリアする決定が発信者にプッシュされます。

結果を保持するために使用するコンテナーの決定を呼び出し元にもプッシュしstd::listます。インターフェイスでハードコーディングする必要はありません。

于 2012-12-21T15:32:07.343 に答える
1

答えは、それはあなたが好むものに依存し、インターフェース仕様で何が起こるかを述べ、それに固執するということです。

混同せず、一貫している限り、誰がリストを空にするかは問題ではないと思います。

于 2012-12-21T13:05:40.563 に答える