struct Base {
void foo(??? fn) {
// do something with fn
}
};
struct A : Base {
A() : Base() { ... }
void aa() { ... }
void aaa() { ... }
};
struct B : Base {
B() : Base() { ... }
void bb() { ... }
};
int main() {
A a, B b;
a.foo(a.aa); // foo works with aa()
a.foo(a.aaa); // foo works with aaa()
b.foo(b.bb); // foo works with bb()
return 0;
}
fn
の子クラスのメンバ関数 (void を返し、パラメータなし) になりたいですBase
。これは悪い設計のように思えます: 親は自分の子供のことを認識すべきではありません。ただし、機能をすべての子クラスに書き込むと、コードの重複が発生します。私は子供たちをできるだけ薄くしたいと思っています。
必要な機能を実現するための最適な設計は何ですか?