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
成为Base
. 这似乎是一个糟糕的设计:父母不应该意识到他们的孩子。但是,将功能写入每个子类会导致代码重复。我想让孩子尽可能瘦。
实现所需功能的最佳设计是什么?