Ada:访问类型和记录无效完成

时间:2014-01-31 18:13:52

标签: declaration record ada

我正在学习Ada并正在使用这本书Rendez-vous with Ada by Naiditch (1995)。在页面385上,给出了包含不完整类型声明的包规范文件的示例:

package Restaurant_Linked_List is

   subtype Name_Type is String (1..20);
   type Restaurant_Record is private;

   procedure Add_To_List (New_Entry: in Restaurant_Record);
   procedure Get (New_Restaurant: out Restaurant_Record);
   procedure Delete_From_List (Target: in Name_Type);
   procedure Search_List (Target: in Name_Type);
   procedure Output_List;

   private
      type Ethnicity is (Chinese, Japanese, French, Korean, Mexican, Italian, Jewish, American, German);
      subtype Price_Type is Float range 0.0 .. 150.0;
      type Restaurant_Record; -- incomplete type declaration
      type Restaurant_Pointer is access Restaurant_Record;
      type Restaurant_Record is -- complete type declaration
        record
           Name: Name_Type;
           Food: Ethnicity;
           Average_Price: Price_Type;
           Next: Restaurant_Pointer;
        end record;

end Restaurant_Linked_List; 

然而,即使使用-gnat95开关编译此主要单元,我也会收到错误消息:

15:11第4行定义的私人类型“Restaurant_Record”无效完成

第15行是行:键入Restaurant_Record; - 不完整的类型声明。

Naiditch提出了上述解决方法,使指针(Restaurant_Pointer)成为可以指向书中页面384上所写的非常类型对象的一个​​组件。

那么如何修复上面的代码?

谢谢。

1 个答案:

答案 0 :(得分:5)

第4行的声明已足以让您声明Restaurant_Pointer。所以只需删除第15行。