“没有选择者”是什么意思?

时间:2014-08-27 06:33:32

标签: ada

我收到以下编译器错误:

  

没有选择器" Put_Timestamp"对于类型" Timestamp_Record_Type"在time_types.ads:99定义

给出错误的代码行是:

Timestamp.Put_Timestamp(Trs_Time);

此项目中的Timestamp和Time_Types包将导入错误所在的同一文件的顶部:

with Timestamp;
with Time_Types;

timestamp.ads包含以下内容:

with Ada.Calendar;

with Time_Types;


package Timestamp is


   function Calculate_Ada_Timestamp( Timestamp_Value : in Time_Types.Timestamp_Time_Type )
    return Ada.Calendar.Time;



  procedure Put_Timestamp
    (Timestamp: in Time_Types.Timestamp_Record_Type);

end Timestamp;

起初我认为错误必须意味着Put_Timestamp,参数类型为Timestamp_Record_Type不存在,但根据上面的代码,情况显然并非如此。

我错过了什么?

1 个答案:

答案 0 :(得分:4)

  

在time_types.ads:99定义的类型“Timestamp_Record_Type”没有选择器“Put_Timestamp”

(重点补充。)

您已向我们展示了Timestamp作为包的声明,但编译器显然认为TimestampTimestamp_Record_Type类型的表达式(可能是变量名称)。

你没有向我们展示的代码中的某个地方,我认为你已经声明了一个名为Timestamp的类型为Timestamp_Record_Type的变量,并且编译器正在寻找一个.Put_Timestamp即可适用于那种类型的东西。

我建议您过度使用名称Timestamp;您对Put_Timestamp过程的参数使用相同的名称。也许Timestamps可能是包的更好名称。