我正在调试一些分为两部分的仿真软件 - 一部分使用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;
答案 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。