Я использую среду разработки GNAT GPS studio, чтобы немного потренироваться в Ada. У меня проблема с видимостью пакета.
Сначала я указываю пакет в файле "DScale.ads", который содержит тип:
package DScale is
type DMajor is (D, E, F_Sharp, G, A, B, C_Sharp);
end DScale;
Затем я указываю в другом файле («Noteworthy.ads») пакет, который определяет процедуру, которая будет использовать тип DMajor пакета DScale:
with Ada.Text_IO;
with DScale;
package NoteWorthy is
procedure Note;
end NoteWorthy;
Наконец, в «Noteworthy.adb» я предоставляю тело пакета «Noteworthy»:
with Ada.Text_IO; use Ada.Text_IO;
package body Noteworthy is
procedure Note is
package ScaleIO is new Enumeration_IO(DScale.DMajor);
thisNote : DScale.DMajor := DScale.D;
begin
ScaleIO.Get(thisNote);
if thisNote = DScale.DMajor'First then
Put_Line("First note of scale.");
end if;
end Note;
begin
null;
end NoteWorthy;
Если я оставлю код как есть, я получу ошибку «оператор не виден напрямую» для оператора if thisNote = DScale.DMajor'First then в теле пакета «Noteworthy».
Есть ли способ обойти эту ошибку без использования предложения «use» или «use type»?
Спасибо.