首页 > 解决方案 > C++ 强制从不同的继承层次实现纯虚方法

问题描述

我有一个Parent班级和两个Child班级:

class Parent
{
};

class Child1: public Parent
{
};

class Child2 : public Parent
{
};

我想要第二个类层次结构,类Cousin位于层次结构的顶部,子类称为Cousin1Cousin2

class Cousin
{
    virtual void doUsefulWork() = 0;
};

class Cousin1 : public Cousin
{
    virtual void doUsefulWork() override
    {
        // One behaviour
    }
};

class Cousin2 : public Cousin
{
    virtual void doUsefulWork() override
    {
        // A different behaviour
    }
};

每个Child子类必须继承一个Cousin子类,以实现doUsefulWork()

class Child1 : public Parent, Cousin1
{
    // Has implementation of doUsefulWork() from Cousin1
};

如何防止Child子类的作者忘记继承Cousin子类?我想要一些会产生编译时错误的东西。

每个Child子类都必须有权访问doUsefulWork().

我正在考虑Cousin从 Parent 继承并定义纯虚拟doUsefulWork()in Parent,但是我会在子类中遇到复杂的多重继承问题Child

标签: c++inheritancepolymorphismmultiple-inheritancepure-virtual

解决方案


如何防止 Child 子类的作者忘记继承 Cousin 子类?我想要一些会产生编译时错误的东西。

您实现这些接口的原因是因为必须有使用这些接口的函数。如果对象未实现接口,则在将对象传递给该函数时会出现编译器错误 - 这充当强制检查对象必须实现该接口的作用。


推荐阅读