C++ でのインターフェイスの実装について質問があります。
インターフェースがあるとします:
class A
{
virtual void f() = 0;
};
これを実装するとき、私は次のようなことをする方法があるのだろうかと思います:
class B : public A {
void f(int arg=0) {....} // unfortunately it does not implement f() this way
};
インターフェースをきれいに保ちたい。クライアント コードがパブリック インターフェイス A を介して呼び出すと、arg は常に自動的に 0 に設定されます。ただし、B を介して呼び出す場合は、arg を別の値に設定して呼び出す柔軟性があります。それは達成可能ですか?
編集: 私はインターフェースと実装を管理しているので、提案、マクロ、テンプレート、ファンクター、その他の意味のあるものは何でも受け入れます。最小限でクリーンなコードベースが欲しいだけです。クラスは大きく、実際の実装に単純に転送する別の関数など、絶対に必要でないコードは書きたくありません。
EDIT2:少し明確にしたい:パブリックインターフェースはクライアントに提供されます。これは、内部でのみ使用されるクラス B インターフェースよりも制限的です。ただし、関数 f() は、入力引数に基づいてわずかに異なる処理を除いて、本質的に同じことを行っています。実際のクラスにはかなりの数のインターフェイス関数があり、署名は複雑です。関数転送をすばやく行うと、退屈なコードの繰り返しが発生し、B の内部インターフェイスが汚染されます。これを C++ で処理する最良の方法は何だろうか。
ありがとう!