Модификаторы доступа для типов

Сегодня столкнулся с достаточно интересной ситуацией: необходимо написать библиотеку с классом, но в нём для удобства приходится создать дополнительный класс для скрытых полей. Вопрос такой: можно ли как-то скрыть этот класс, т.е. он служебный и в видимой для пользователя части библиотеки не должен быть видим. Может быть, есть смысл добавить модификаторы доступа для типов? Например:

type A=private class
...
end;

или

private type A=class
...
end;
2 лайка

Используйте деление на интерфейс и реализацию - в секции реализации ничего не видно

Это не всегда работает, к примеру в классе t1 надо переменную типа t2, но тип t2 должен быть приватным:

unit ;

interface

type
  t1 = class;

implementation

type
  t2 = class
  
  end;
  
  t1 = class
    
    a: t2;
  
  end;

end.

Так сделать не позволит потому что описание и реализация t1 находятся в разных type.

1 лайк

Именно в этом и проблема. Собственно, почему бы не отказаться от устаревшей версии с интерфейсом и реализацией? Ведь один шаг к этому уже сделан-сокращённый синтаксис модуля/библиотеки! Модификатор доступа для типа, как я считаю, не испортит Паскаль, тем более .NET.

Ну отказываться от interface/implementation, из за совместимости, точно не будут. А вот добавить модификаторы видимости для типов я и раньше просил, и всё ещё За эту идею.

В принципе, вы правы interface/implementation нужно оставить, но модификаторы доступа это не отменяет :smile:

Было бы очень удобно - как в C#. :slight_smile:

Да, и полезно!