我是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
那我错过了什么?
答案 0 :(得分:5)
您有受保护的类型,而不是受保护的对象。从
更改声明protected type Signal_Object is
到
protected Signal_Object is
或声明类型为
的对象My_Signal_Object : Signal_Object;
然后调用对象
My_Signal_Object.Signal