繁体   English   中英

这个Ada程序有什么错误?

[英]What is the error in this Ada program?

此Ada2012程序有什么错误?

with Ada.Iterator_Interfaces;

package My is

   type Cursor is private;

   function Has_Element (Position: Cursor) return Boolean;

   package Base_Iterators is new Ada.Iterator_Interfaces(Cursor, Has_Element);

   type Bindings_Iterator is new Base_Iterators.Forward_Iterator with private;

   overriding function First (Object: Bindings_Iterator) return Cursor;

   overriding function Next (Object: Bindings_Iterator; Position: Cursor) return Cursor;

private

   type Iterated_Object is access all Integer;

   type Cursor is new Iterated_Object;

   type Bindings_Iterator is new Base_Iterators.Forward_Iterator with null record;

end My;

尝试检查语法和语义:

$ gnatgcc -gnat2012 -c my.ads 
my.ads:23:09: type must be declared abstract or "First" overridden
my.ads:23:09: "First" has been inherited from subprogram at a-iteint.ads:26, instance at line 9

据我了解, First被我覆盖。 我没有得到编译器抱怨的东西。

该错误来自于Cursor是私有派生的访问类型。 更改为

type Cursor is access all Integer;

删除错误,将其更改为记录类型或数字类型也是如此。 Iterated_ObjectCursor的完整定义移至公共视图也可以消除该错误。

我以为您偶然发现了编译器错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM