在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对话框时遇到的实际问题。
我有一个对话框类(假设是MyDialog),它派生自CDialog。由于依赖性问题,我需要创建一个抽象接口(MyDialogInterface)。使用MyDialogInterface的类需要使用特定于MyDialog的方法,但还需要调用CDialog :: SetParent。我刚刚通过创建MyDialog :: SetParent并使其传递到CDialog :: SetParent来解决了这个问题,但想知道是否有更好的方法。
override
,应该更新这个。 - jpo38