Марк С прав (как обычно).
Прямое множественное наследование очень противоречиво даже в тех языках, которые его поддерживают. Существуют большие проблемы с тем, что компилятор должен делать в некоторых крайних случаях, например, когда оба родительских класса определяют разные версии одного и того же метода или члена. Это было явно не разрешено в Ada95, когда они добавили наследование.
Итак, ваш следующий вопрос будет «Так как мне делать то, что я хочу делать?»
Это зависит от того, чего вы пытаетесь достичь, используя множественное наследование. В наихудшем (наиболее сложном) случае вы обычно можете добиться нужного эффекта с помощью наследования «mixin». Я уже делал это раньше, но все же я думаю, что это лучше объяснено в этой статье AdaIC: Ada95 и множественное наследование , чем я мог бы сделать сам.
Вот дайджест:
Ада 95 поддерживает множественное наследование
включение модуля (через несколько
предложения "with" / "use"),
множественное наследование
"реализовано-используя" через приват
расширения и состав записи, и
множественные наследования через
использование дженериков, формальных пакетов и
дискриминанты доступа.
Похоже, что у Ada 2005 есть другой более простой способ сделать это ("интерфейсы"), но у меня еще не было возможности попробовать это. Вы можете прочитать больше об этом (в том числе, почему прямой MI все еще считается плохим в Аде) здесь . Я нашел этот пример. Опять же, это будет работать только если ваш компилятор поддерживает Ada 2005
Interfaces can be composed from other interfaces thus
type Int2 is interface;
...
type Int3 is interface and Int1;
...
type Int4 is interface and Int1 and Int2;
...