首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个Ada程序中的错误是什么?

这个Ada程序中的错误是什么?
EN

Stack Overflow用户
提问于 2017-08-22 02:29:37
回答 1查看 400关注 0票数 0

此Ada2012程序中的错误是什么?

代码语言:javascript
复制
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;

尝试检查语法和语义:

代码语言:javascript
复制
$ 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是被我覆盖的。我不明白编译器在抱怨什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-22 03:17:25

该错误源于Cursor是私有派生的访问类型。将其更改为

代码语言:javascript
复制
type Cursor is access all Integer;

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

我想你偶然发现了一个编译器错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45803539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档