我是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;
Run Code Online (Sandbox Code Playgroud)
但是编译器不喜欢这个调用Signal_Object.Signal;,我得到以下错误
invalid use of subtype mark in expression or call
Run Code Online (Sandbox Code Playgroud)
那我错过了什么?
您有受保护的类型,而不是受保护的对象.要么改变声明
protected type Signal_Object is
Run Code Online (Sandbox Code Playgroud)
至
protected Signal_Object is
Run Code Online (Sandbox Code Playgroud)
或声明该类型的对象
My_Signal_Object : Signal_Object;
Run Code Online (Sandbox Code Playgroud)
然后调用该对象
My_Signal_Object.Signal
Run Code Online (Sandbox Code Playgroud)