このようなクラスを設計するときに問題が発生します
class C1 {
public:
void foo();
}
class C2 {
public:
void foo();
}
C1とC2には同じメソッドfoo()があり、
class Derived1 : public Base {
public:
void Update() {
member.foo();
}
private:
C1 member;
}
class Derived2 : public Base {
public:
void Update() {
member.foo();
}
private:
C2 member;
}
両方のDerivedクラスのUpdate()はまったく同じですが、メンバーのタイプが異なります。したがって、新しい派生クラスごとにUpdate実装をコピーする必要があります。
これは、このコードの重複を減らす方法ですか?私はマクロを使った解決策しか出てきません。テンプレートを使ってこれを解決するもっとエレガントな方法があると思いますが、私にはわかりません。
編集: たくさんの人に感謝しますが、私は何かを逃したと思います。
1.私はc++を使用しています
2.実際には、各Derivedクラスには約5つのメンバーがあり、それらはすべてfoo()メソッドを提供し、同じ基本クラスから派生しています。私の状況では、(非常に長い)Update()メソッドを既に作成しており、変更なしですべての派生クラスで機能します。したがって、このUpdate()をコピーしてすべての新しいクラスのUpdate()に貼り付けるだけで、ひどいコードの重複が発生します。Update()を書き直さなくても、重複を減らすことができる方法があるのではないかと思います。
再びthx