在 C++ 中,是否可以让基类和派生类实现单个接口?
例如:
class Interface
{
public:
virtual void BaseFunction() = 0;
virtual void DerivedFunction() = 0;
};
class Base
{
public:
virtual void BaseFunction(){}
};
class Derived : public Base, public Interface
{
public:
void DerivedFunction(){}
};
void main()
{
Derived derived;
}
这失败了,因为 Derived 无法实例化。就编译器而言,从未定义过 Interface::BaseFunction。
到目前为止,我发现的唯一解决方案是在 Derived 中声明一个传递函数
class Derived : public Base, public Interface
{
public:
void DerivedFunction(){}
void BaseFunction(){ Base::BaseFunction(); }
};
有没有更好的解决方案?
编辑:如果重要的话,这是我在使用 MFC 对话框时遇到的一个现实问题。
我有一个从 CDialog 派生的对话框类(可以说是 MyDialog)。由于依赖问题,我需要创建一个抽象接口(MyDialogInterface)。使用 MyDialogInterface 的类需要使用 MyDialog 特有的方法,但也需要调用 CDialog::SetParent。我刚刚通过创建 MyDialog::SetParent 并将其传递给 CDialog::SetParent 来解决它,但想知道是否有更好的方法。