将记录数据类型推送到堆栈中



我是 Ada 的新手,我不知道如何更新记录中的字段并将记录推送到使用通用包实例化的堆栈中。

我尝试使用genericS.vehicleName和garageBay.vehicleName无济于事。

--Snippet
type vehicle is array(1..15) of character;
type vName is array(1..8) of character;
type garageBay is record
vehicleType: vehicle;
vehicleName: vName;
time2Fix: integer;
startTime: integer;
finishTime: integer;
end record;
begin
get(lowerbound);
get(upperbound);
declare
package genericS is new gstack(lowerbound,upperbound, garageBay);
use genericS;
begin
put("Enter vehicle name: " ); 
get(garageBay.vehicleName); 
tpush(garageBay);
end;
--Errors
x86_64-linux-gnu-gcc-8 -c gusestack.adb
gusestack.adb:24:21: invalid prefix in selected component "garageBay"
gusestack.adb:25:23: invalid use of subtype mark in expression or call
gnatmake: "gusestack.adb" compilation error

您似乎在类型和类型的实例之间感到困惑。您可以定义垃圾湾类型,但从不创建该类型的实例。类型声明定义类型的结构,包括类型实例所需的内存量。它不会为某个类型的所有可以想象的实例分配内存。您必须在代码的声明性部分中创建垃圾湾的实例,例如

element : garbageBay;

然后,您可以修改代码以表示

get(element.vehicleName);
tpush(element);

最新更新