【发布时间】:2014-08-31 11:26:07
【问题描述】:
我正在使用 GNAT GPS Studio IDE 以便在 Ada 中进行一些训练。我遇到了包裹可见性问题。
首先我在一个名为“DScale.ads”的文件中指定一个包,其中包含一个类型:
package DScale is
type DMajor is (D, E, F_Sharp, G, A, B, C_Sharp);
end DScale;
然后我在不同的文件(“Noteworthy.ads”)中指定一个包,该包定义了一个将使用 DScale 包的 DMajor 类型的过程:
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;
如果我按原样保留代码,我将在“Noteworthy”包的主体中收到“if thisNote = DScale.DMajor'First then”语句的“运算符不直接可见”错误。
有没有办法在不使用“use”或“use type”子句的情况下绕过这个错误?
谢谢。
【问题讨论】:
标签: packages operator-keyword ada visible