Ada编译错误 - 没有类型的选择器

时间:2015-02-03 16:30:46

标签: compiler-errors ada

我正在调试一些分为两部分的仿真软件 - 一部分使用C ++,另一部分使用Ada。在GUI上,有一些变量显示有关实体的信息,当它从A点移动到B点时,例如Time To Go(在给定当前速度和其他任何时候完成该段旅程所需的时间)因素,如风)和ETA。其中一个值不正确。

似乎显示的值来自Ada代码的一部分:

--update the legETAValid attribute
this.steeringData.legETAValid := newSteeringData.legTTGValid;

我在上面的一行注意到,一个不正确的值被传递给GUI上显示的变量,因此我将该行更改为应该显示的值:

this.steeringData.legETAValid := newSteeringData.legETAValid;

然而,当我尝试构建并运行此代码时,我收到一个编译错误,上面写着:"没有选择器" legETAValid"对于类型" SteeringData_record"定义于......"

之前从未使用过Ada,我不确定这个编译错误意味着什么......它是否类似于&#34;未声明的标识符&#34;在C / C ++中?我试过做一个&#39;查找所有参考文献&#39;在变量上,项目中还有其他地方使用它,所以我不会认为它是一个未声明的标识符......这个错误意味着什么?< / p>

编辑04/02/2015 @ 09:10

该变量在.ads文件中使用以下行声明:

 legETAValid : Boolean := false;

1 个答案:

答案 0 :(得分:2)

no selector "legETAValid" for type "SteeringData_record" defined at....告诉我们:

  • SteeringData_record是一种类型,其中:
    • 该类型没有名为legETAValid的可见组件。
    • 该类型不是带有名为legETAValid的原始函数的标记记录。

&#34;选择器&#34;是使用点表示法(Name.Selector)时描述第二个标识符的通用术语。实际上它取决于具体情况。也可能是newSteeringData是一个包,而legTTGValid是在包规范的公共部分中声明的函数或对象。

建议:学习Ada需要两周时间。考虑花时间学习它。如果您了解C ++,请尝试Ada Distilled