【发布时间】:2013-08-15 03:16:05
【问题描述】:
我有一些如下所示的 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;
稍后在我的代码中,我尝试像这样实例化节点:
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”这段代码时,编译器抱怨两个赋值语句都说:“无效的约束:类型没有判别式”。 怎么了?据我所知,我没有在 NODE 中定义任何判别式,也没有尝试在这些新的 NODE 调用中分配任何判别式。
【问题讨论】:
标签: ada