Ada - 访问不断的混乱

时间:2018-05-28 11:22:07

标签: ada

说我有一个类型:

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

我对访问常量部分感到困惑。 如果我实例化XA的实例指向A的实例,那么只需保留对XA"实例"的引用,我可以更改什么? ?

我可以更改XA指向的对象的成员吗?我说不,但A对象中XA的邻居呢?

有人可以向我解释使用access constant吗?

1 个答案:

答案 0 :(得分:3)

这是一个显示其功能的小例子:

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实体的解除引用视为constant Integer,即使对象是变量。