Ada - 实例化记录时“类型没有约束”错误

时间:2013-08-14 17:57:50

标签: ada

我有一些看起来像这样的Ada代码:

type NODE;
type NODE_PTR is access NODE;
type PRINT_PTR is access procedure(X: NODE_PTR);
type NODE is
record
             parent : NODE_PTR;
             left : NODE_PTR;
             right : NODE_PTR;
             id : INTEGER;
             visit : PRINT_PTR;
end record;

procedure PRINT(X : NODE_PTR) is
...
end PRINT;

稍后在我的代码中,我尝试像这样实例化NODE:

root : NODE_PTR;
id_value : INTEGER;
...
root := new NODE(NULL, NULL, NULL, id_value, PRINT'access);
...

和此:

ret_ptr : NODE_PTR;
id_value : INTEGER;
...
ret_ptr := new NODE(parent, NULL, NULL, id_value, PRINT'access);

当试图“gnatmake”这段代码时,编译器会抱怨两个assign语句:“无效约束:类型没有判别式”。 怎么了?据我所知,我没有在NODE中定义任何判别式,我也没有尝试在新的NODE中调用任何判别式 - 调用。

1 个答案:

答案 0 :(得分:4)

在分配具有初始值的访问类型时,您需要'喜欢这个:

root := new NODE'(NULL, NULL, NULL, id_value, PRINT);