gpt4 book ai didi

generics - 在 Ada 95 中创建通用子包

转载 作者:行者123 更新时间:2023-12-01 12:57:35 25 4
gpt4 key购买 nike

我有包 p1 和两个子包:p1.child1p1.child2所有包都是通用的。我正在尝试在 p1.child2 中创建 p1.child1 的实例:

package body p1inst.child2 is

package p1inst is new p1;
use p1inst;

package p1_child1inst is new p1inst.child1;
use p1inst;

我收到一个错误:“p1”在其内部的实例化。如何将通用包 p1.child2 的实例创建到 p1.child1 中?

最佳答案

Ada Programming: Advanced generics 中所述, 它可能有助于区分通用单元和该通用单元的实例。编译器告诉您不能在 p1 的子项中创建 p1 的实例,因为“通用单元的子项必须无论如何都要通用。”

相反,在别处创建 p1 的实例,并使用该实例创建 p1 的每个子实例。

附录:作为另一个具体示例,procedure Jumble创建 Ada.Strings.Bounded 的实例:

Max_Word  : constant Positive := 24;
package ASB is new Ada.Strings.Bounded.Generic_Bounded_Length(Max_Word);

稍后,该过程使用该实例创建通用子实例的实例,Ada.Strings.Bounded.Hash :

function Hash is new Ada.Strings.Bounded.Hash(ASB);

关于generics - 在 Ada 95 中创建通用子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866686/

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