我有一个 ada 包,格式为
package C is
type Test is (Test_1, Test_2, Test_3);
end C;
Run Code Online (Sandbox Code Playgroud)
和另一个包的形式
with C;
package B is
subtype Test is C.Test;
end B;
Run Code Online (Sandbox Code Playgroud)
还有另一种形式
with B;
package A is
subtype Test is B.Test;
Item: Test := Test_1;
end A;
Run Code Online (Sandbox Code Playgroud)
天真地,我希望 B 中定义的子类型(稍后由 A 进行子类型化)能够访问原始类型的成员。然而,经过检查,C 的成员在 B 的范围内甚至不可见。这可以通过添加 来修复use c;
,这在某种程度上似乎是一个找到解决方案,但是要在 A 中使用它,您必须添加with c; use c;
到每个传递依赖于 C 的包。这可能会导致混乱,因为您应该使用 C 并不明显。
我希望能够“重新导出”这些类型,以便我可以更好地抽象程序层。
ada ×1