这是我的问题:
#include <iostream>
using namespace std;
class A {
public:
virtual void f() = 0;
};
class B {
public:
void f() {cout << "Hello world!" << endl;};
};
class C : public A, private B {
public:
using B::f; // I want to use B::f as my implementation of A::f
};
int main() {
C c; // error: C is abstract because f is pure virtual
c.f();
}
现在到目前为止,我已经找到了两种解决方法:
在类 C 中定义一个只调用 B::f 的函数 f。但这很乏味而且不那么干净(尤其是在为一堆功能这样做时)
B 继承自 A,C 继承自 B(全部公开)。对我来说,它不能很好地代表设计。特别是,B 不是 A,我不希望 B 依赖于 A。
你能想到其他的可能性吗?