代码之家  ›  专栏  ›  技术社区  ›  zython Hiery Nomus

ADA-访问持续混乱

ada
  •  0
  • zython Hiery Nomus  · 技术社区  · 6 年前

    假设我有一个类型:

    type A;
    type XA is access constant A;
    type A is
       record
          Member : Natural :=  1;
          Neighbor : XA;
       end record;
    

    我对访问常量部分感到困惑。 如果我实例化一个 XA 指的是 A ,当只保留对 XA “实例”?

    我能改变对象的成员吗? XA 指向?我会说不,但是那家酒店的邻居呢? XA 对象?

    有人能解释一下 access constant 对我来说?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Jacob Sparre Andersen    6 年前

    下面是一个小例子,说明它的作用:

    procedure Access_Constant is
    
       type XA is access constant Integer;
    
       A : aliased Integer;
       X : XA;
    begin
       X := A'Access;
       X.all := 4;
    end Access_Constant;
    

    当您试图编译它时,分配给 X 工作正常( X 是一个变量),而赋值给 X.all 禁止(如 X.ALL 是常量-根据定义 XA )

    尽管如此 XA 声明为指向 constant Integer ,即使是变量也是可以接受的,但只能处理 XA 实体 常量整数 ,即使对象是变量。