我正在学习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
上所写的非常类型对象的一个组件。
那么如何修复上面的代码?
谢谢。
答案 0 :(得分:5)
第4行的声明已足以让您声明Restaurant_Pointer
。所以只需删除第15行。