Compiler errors “解释”;完整视图的声明必须出现在“私人部分”;

Compiler errors “解释”;完整视图的声明必须出现在“私人部分”;,compiler-errors,ada,Compiler Errors,Ada,我遇到了一个错误,我找不到任何文档来解释代码中需要修复的内容。代码是: type BinarySearchTreePoint is limited private; type Node; type BinarySearchTreePoint is access Node; type Node is record Llink, Rlink : BinarySearchTreePoint; Ltag, Rtag : Boole

我遇到了一个错误,我找不到任何文档来解释代码中需要修复的内容。代码是:

   type BinarySearchTreePoint is limited private;
   type Node;
   type BinarySearchTreePoint is access Node;

   type Node is
      record
         Llink, Rlink : BinarySearchTreePoint;
         Ltag, Rtag : Boolean; --True indicates pointer to lower level,
                               -- False a thread.
         Info : Customer;
      end record;

我得到的错误是
全视图声明必须出现在私有部分中
。它将此错误指向行
type BinarySearchTreePoint is access节点,我不确定错误消息的意思。

当你说
类型Foo是private(或
有限私人
)您需要在私人部分提供完整声明;当然,这意味着你必须有一个私人部分

您显示的代码将使用

包Foo是
类型BinarySearchTreePoint是有限私有的;
私有的
类型节点;
类型BinarySearchTreePoint为访问节点;
类型节点是
记录
Llink,Rlink:BinarySearchTreePoint;
...
但是如果您需要
节点
在包外可见,您需要说

包Foo是
类型BinarySearchTreePoint是有限私有的;
类型节点是私有的;
--与从BinarySearchTreePoint获取节点有关的内容??
返回客户的功能内容(属于节点:节点);
私有的
类型BinarySearchTreePoint为访问节点;
类型节点是
记录
Llink,Rlink:BinarySearchTreePoint;
...

当你说
类型Foo是私有的(或
有限私人
)您需要在私人部分提供完整声明;当然,这意味着你必须有一个私人部分

您显示的代码将使用

包Foo是
类型BinarySearchTreePoint是有限私有的;
私有的
类型节点;
类型BinarySearchTreePoint为访问节点;
类型节点是
记录
Llink,Rlink:BinarySearchTreePoint;
...
但是如果您需要
节点
在包外可见,您需要说

包Foo是
类型BinarySearchTreePoint是有限私有的;
类型节点是私有的;
--与从BinarySearchTreePoint获取节点有关的内容??
返回客户的功能内容(属于节点:节点);
私有的
类型BinarySearchTreePoint为访问节点;
类型节点是
记录
Llink,Rlink:BinarySearchTreePoint;
...

将其放在软件包的私人部分。声明一个私有类型,然后发布它的详细信息是没有意义的。另请参见。@BrianDrummond我不知道怎么做<代码>类型BinarySearchTreePoint是有限的私有访问节点?类似的东西?把它放在包裹的私人部分。声明一个私有类型,然后发布它的详细信息是没有意义的。另请参见。@BrianDrummond我不知道怎么做<代码>类型BinarySearchTreePoint是有限的私有访问节点?类似的内容?此解决方案还解释了完整视图声明必须出现在私有部分中的含义。有两个
BinarySearchTreePoint
声明。第一个表示
是私有的
,这意味着这里不会给出完整的类型定义。相反,完整的类型定义将在包
Foo
的私有部分的第二个声明中给出。这就是
BinarySearchTreePoint
的第二个声明所做的。因此,对于允许查看完整定义的任何读者、人员或编译器来说,完整类型定义都将进入视图。此解决方案还解释了在私有部分中必须出现的
完整视图声明的含义。有两个
BinarySearchTreePoint
声明。第一个表示
是私有的
,这意味着这里不会给出完整的类型定义。相反,完整的类型定义将在包
Foo
的私有部分的第二个声明中给出。这就是
BinarySearchTreePoint
的第二个声明所做的。因此,对于任何允许查看完整定义的读者、人员或编译器,都可以看到完整的类型定义。