3

私はAdaは初めてですが、プログラミング全般は初めてではありません。保護されたデータ オブジェクトに問題があります。例や本から理解したように、タスクと同じように、保護されたデータ オブジェクトのメンバーを呼び出すことができます。

これが私のコードです:

procedure ass4 is

   protected type Signal_Object is
      entry Wait;
      procedure Signal;
      function Is_Open return Boolean;
   private
      Open : Boolean := False;
   end Signal_Object;

   protected body Signal_Object is

      entry Wait when Open is
      begin
         Open := False;
      end Wait;

      procedure Signal is
      begin
         Open := True;
      end Signal;

      function Is_Open return Boolean is
      begin
         return Open;
      end Is_Open;

   end Signal_Object;
begin

Signal_Object.Signal;

end;

ただし、コンパイラは呼び出しを好まずSignal_Object.Signal;、次のエラーが発生します

invalid use of subtype mark in expression or call

それで、私は何が欠けていますか?

4

1 に答える 1

6

保護されたオブジェクトではなく、保護された型があります。からの宣言を変更します

protected type Signal_Object is

protected Signal_Object is

または型のオブジェクトを宣言します

My_Signal_Object : Signal_Object;

次に、オブジェクトを呼び出します

My_Signal_Object.Signal
于 2012-09-19T13:12:49.340 に答える