-1

現在の署名が f(a,b=0) である関数があります。別の引数 c を追加したい。現在の動作である f(a,b) と f(a,c) を呼び出すことができるように、関数が必要です。1 つの方法は、関数をオーバーロードして関数コードを複製することです。f(a,c) から f(a,b) を呼び出したくありません。私はC++で作業しています。

このコードの重複を回避できる標準的な設計パターンまたはソリューションはありますか?

4

1 に答える 1

6

私があなたをフォローしているかどうかは完全にはわかりませんが、これにバリエーションを使用できます。

void f(int a, int b=0, int c=0);
void f2(int a, int c=0) { f(a, 0, c); }

コードが重複していないことに注意してください。これで、最初の関数を呼び出す別の関数ができましたが、2 番目ではなく 3 番目の引数を指定できます。

于 2012-04-15T05:04:25.567 に答える