Нет очевидного правильного ответа на этот вопрос.Решение о том, следует ли разделять базовый класс на несколько абстрактных базовых классов, должно быть решением, которое вы примете на основе того, представляет ли базовый класс логически несколько различных концепций, а не плохие сообщения об ошибках компилятора.Если единственная причина, по которой вы это делаете, это сообщения об ошибках компилятора, вы можете проверить и посмотреть, можете ли вы обновить компилятор или есть какая-то другая причина для этого.Большинство современных компиляторов должны предоставлять очень хорошие, подробные ошибки по этому поводу.
Разделение интерфейса на части может быть хорошей идеей, если ваш дизайн предполагает, что вы на самом деле хотите иметь несколько разных классов, которые реализуют только небольшие кусочкиБазовый класс.Если вы ожидаете сделать это, может быть выгодно разделить интерфейс на части.Однако из этого вы увидите некоторую сложность.Например, если у вас есть указатель одного типа интерфейса на объект, реализующий несколько интерфейсов, вам может потребоваться выполнить какое-то перекрестное приведение для получения правильного типа, или вам может потребоваться ввести новый абстрактный класс, который представляет что-то наследующееиз всех различных типов интерфейса.Многократное наследование с помощью классов интерфейса может также привести к некоторым конфликтам имен, хотя это обычно не является проблемой, если интерфейсы спроектированы правильно.
Короче, я бы настоятельно рекомендовал не делать этого по причине ошибки компилятора, но если вы считаете, что это хорошее дизайнерское решение, то обязательно сделайте это.В наши дни компиляторы достаточно хороши, и вам редко (но не разу) нужно строить свой дизайн вокруг них.