在ada语言中扩展标记的私有类型
我想在Ada.Containers.Doubly_Linked_列表的实例化中添加一个过程,该列表将打印出来。我还想隐藏一些函数和程序。如果有更好的方法,我很乐意阅读它,但是现在,我正在尝试将实例化包装到另一个包中,这意味着创建一个新的列表和游标。泛型定义如下:在ada语言中扩展标记的私有类型,ada,Ada,我想在Ada.Containers.Doubly_Linked_列表的实例化中添加一个过程,该列表将打印出来。我还想隐藏一些函数和程序。如果有更好的方法,我很乐意阅读它,但是现在,我正在尝试将实例化包装到另一个包中,这意味着创建一个新的列表和游标。泛型定义如下: type List is tagged private; pragma Preelaborable_Initialization(List); type Cursor is private; pragma Pre
type List is tagged private;
pragma Preelaborable_Initialization(List);
type Cursor is private;
pragma Preelaborable_Initialization(Cursor);
我试过了
package Collection is new Ada.Containers.Doubly_Linked_Lists (New_Type);
type Cursor is new Collection.Cursor;
type List is new tagged Collection.List with private;
这似乎对游标有效,但列表导致了预期的子类型指示错误
如何为已标记的私有类列表创建子类型?问题在于,您都使用了
new
和taged
:
带有Ada.Containers.Doubly_Linked_列表;
包示例是
type New_type为新整数;
包装集合为新Ada.Containers.Doubly_Linked_List(新_类型);
类型游标是新集合。游标;
类型列表是新集合。列表具有私有属性;
私有的
类型列表为新集合。记录为空的列表;
结束示例;
问题在于,您都使用了新的和标记的:
带有Ada.Containers.Doubly_Linked_列表;
包示例是
type New_type为新整数;
包装集合为新Ada.Containers.Doubly_Linked_List(新_类型);
类型游标是新集合。游标;
类型列表是新集合。列表具有私有属性;
私有的
类型列表为新集合。记录为空的列表;
结束示例;
请注意,如果您使用非空记录
扩展集合.List
,则必须声明对集合中所有函数的重写。List
返回一个列表
。这就解决了问题,谢谢。我记住了这个警告。请注意,如果您使用null record
以外的任何内容扩展Collection.List
,您将必须声明集合中所有函数的重写。List
返回List
。这就解决了问题,谢谢。我牢记这一警告。