Нет, это не проблема для автора компилятора:
- В общем случае разработчик компилятора может определять, как работает множественное наследование.
- Специально для C ++ существует несколько решений, которые может реализовать писатель.
Это проблема для программиста C ++, но только если вы не понимаете, как MI работает в C ++.
У меня есть одно общее решение, которое заключается в том, чтобы иметь базовый класс, который определяет общедоступный интерфейс - который вы затем рассматриваете как имеющий отдельные подразделы, которые затем реализуете как отдельные абстрактные классы, которые многократно наследуются конкретным листовым классом:
------
| Base |
------
| |
------
^
|
-----------------
| | |
------ ------ ------
| A | | B | | C |
------ ------ ------
| | | | | |
------ ------ ------
^ ^ ^
| | |
-----------------
|
-------
|Derived|
-------
| |
-------
Каждый из A, B и C реализует непересекающиеся подразделы Base, что означает, что вы можете заменить, скажем, A, на A 'для альтернативной или улучшенной реализации, не затрагивая какой-либо другой класс.