2
このコードの問題点は何ですか?コンパイラは、実行エントリがなく、実行許可がエントリに一致しない(どちらも間違っていると思われる)と、別にTrainを宣言前に使用することはできない(ただし、既に宣言されている)という2つのことを言います。何が起こっているのかを私に説明してください。Adaオブジェクト "Train"は宣言の終了前に使用できません
私はコード全体を表示することを躊躇しますが、そうすることができます。
type ItineraryType is array (0..255) of Integer;
type Train is record
Label : Integer;
Capacity : Integer;
Maxspeed : Integer;
Starts : Integer;
Itinerary : ItineraryType;
Stops : Integer;
lock : access Mutex;
end record;
task type TrainThread is
entry Run (train1:Train);
end;
task body TrainThread is
train : Train;
begin
accept Run (train1:Train) do
train := train1;
end;
end;
-- part of main
train1 := new TrainThread;
train1.Run(trains(i));
main.adb:51:05: warning: no accept for entry "Run"
main.adb:52:17: object "Train" cannot be used before end of its declaration
main.adb:54:09: no entry declaration matches accept statement
gnatmake: "main.adb" compilation error