У меня есть класс Parent
и два класса Child
:
class Parent
{
};
class Child1: public Parent
{
};
class Child2 : public Parent
{
};
Я бы хотел иерархию второго класса, с классом Cousin
в верхней части иерархии и подклассами под названием Cousin1
, Cousin2
etc:
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()
в * 1030.*, но тогда я бы усложнил множественные проблемы наследования в Child
подклассах?