gpt4 book ai didi

Ada:重新导出枚举类型值

转载 作者:行者123 更新时间:2023-12-03 23:26:41 25 4
gpt4 key购买 nike

我有一个 ada 包的形式

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

最佳答案

如果您将包 A 更改为

with B;
package A is
subtype Test is B.Test;
use all type Test;
Item: Test := Test_1;
end A;
代码编译。不确定这是否会有所帮助。
这是 Ada 2012 的功能;见 ARM 8.4(8)和(8.1)。 use all type使类型的原始操作可见(包括枚举文字)。

关于Ada:重新导出枚举类型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63122283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com