Ада - доступ постоянная путаница - PullRequest
0 голосов
/ 28 мая 2018

Скажем, у меня есть тип:

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 голосов
/ 28 мая 2018

Вот небольшой пример, показывающий, что он делает:

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, даже если объект является переменной.

...