我有两个基类和一个继承这两个基类的类。 两个基类都有一个具有相同签名的虚函数,我想在派生类中为每个虚函数提供不同的实现。
class A{
virtual void f() = 0;
}
class B{
virtual void f() = 0;
}
class Derived:public A, public B{
void A::f() override{ // Error
...
}
void B::f() override{ // Error
...
}
}
正确的做法是什么? (我无法重命名虚函数。实际上这两个基类是从同一个模板类生成的。)
最佳答案
template <typename T>
class AShim : public A {
void f() override {
static_cast<T*>(this)->A_f();
}
};
template <typename T>
class BShim : public B {
void f() override {
static_cast<T*>(this)->B_f();
}
};
class Derived: public AShim<Derived>, public BShim<Derived> {
void A_f();
void B_f();
};
关于c++ - 在 C++ 中覆盖函数时如何选择基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45228261/