Что вы делаете неправильно, так это то, что вы объявили пакет с именем MyFloat_IO (производный от Ada.Text_IO.Float_IO) внутри другого пакета, который также называется MyFloat_IO.Чтобы добиться того, как вы объявляете вещи, вам нужно было бы позвонить:
MyFloat_IO.MyFloat_IO.Put(Z);
Я уверен, что можно просто извлечь пакет из универсального объекта как единицу компиляции.,Однако вы можете вместо этого переименовать пакет MyFloat
, тип что-то вроде Instance
и ваш пакет ввода-вывода IO
.Таким образом, люди, желающие его использовать, скажут MyFloat.Instance
для типа и MyFloat.IO
для пакета ввода-вывода.
(Обновить ответ)
Я вижу по коду, который вы разместили.Должно быть, вас полностью запутали.Вот что я имел в виду (предупреждение: не скомпилировано).
package MyFloat is
type Instance is digits 6 range 0.0..Float'Last; --'
package IO is new Ada.Text_IO.Float_IO (Instance);
end MyFloat;
Другими словами, пакет называется MyFloat
, тип - Instance
, а пакет ввода-вывода - * 1020.*.При вызове извне пакета типом является MyFloat.Instance
, а процедура put - MyFloat.IO.Put
.
Обратите внимание, что если вы используете Gnat, вам придется переименовывать исходный файл при переименовании пакета.