1

前回の質問に対する有益な回答を得た後、さまざまなオプションを持つクラスのテンプレート メソッド パターンを使い始めました。それらをすべて実装することなく、そのクラスのオブジェクトに対する現在の宣言は次のようになります。

pc < prg, tc, 9, 0, 4, 4, test, true, true, true, true, false, true, true, 10, 0, -1, 3, 3 > mp;

長いテンプレート パラメータ リストをどのように処理しますか? true/false や数値の代わりに列挙型/定義を使用する必要がありますか? 一般的に使用される代替手段はありますか?

4

4 に答える 4

5

そんなに長いテンプレートパラメータリストがあったら、デザインを再考したいと思います。多くのパラメータは、多くの場合、設計が不適切であることを示しています。

于 2010-09-09T12:54:23.880 に答える
4

はい、true / falseの代わりに列挙型(定義ではありません)を使用してください。そうすれば、パラメーターの順序が狂った場合、コンパイラーは文句を言います。また、それは読者にとってはるかに明確です。

一般に長いパラメーターリストを処理する場合は、typedefの背後にそれらを非表示にするか、一部のテンプレートパラメーターを修正し、他のパラメーターを変更できるジェネレーターを使用します。

于 2010-09-09T12:52:15.833 に答える
2

私はc++を実行しません。これはテンプレートにはうまく当てはまらないかもしれませんが、長いパラメーターリストを使用する通常のメソッドで実行しようとするのは、関連するパラメーターを見つけてそれらを適切にグループ化し、グループ化を反映するパラメーターオブジェクトを導入することです。これにより、より複雑なパラメーターのリストが短くなります。

于 2010-09-09T12:53:23.940 に答える
1

std::vector などのバリアント型のコレクションである単一の引数を渡すと評価します。

于 2010-09-09T12:51:33.293 に答える