【问题标题】:About protected data objects in ADA关于 ADA 中受保护的数据对象
【发布时间】:2012-09-19 12:55:25
【问题描述】:

我是 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

那么我错过了什么?

【问题讨论】:

    标签: ada


    【解决方案1】:

    你有一个受保护的类型,而不是一个受保护的对象。要么从

    更改声明
    protected type Signal_Object is
    

    protected Signal_Object is
    

    或声明该类型的对象

    My_Signal_Object : Signal_Object;
    

    然后调用对象

    My_Signal_Object.Signal
    

    【讨论】:

    • 谢谢,尝试在线学习示例,但如果我能得到一本关于 Ada 的书会更好:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多