friend's

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

friend's

Сообщение А.Н. » 16.04.2010 12:56:23

Существуют ли во FreePascal "дружественные" классы или, лучше возможность объявить, как friend метод класса?
Не помещением классов в один модуль, а каким-либо другим способом возможно это сделать?
А.Н.
постоялец
 
Сообщения: 230
Зарегистрирован: 13.03.2010 12:23:58

Re: friend's

Сообщение скалогрыз » 16.04.2010 15:56:03

А.Н. писал(а):Существуют ли во FreePascal "дружественные" классы или, лучше возможность объявить, как friend метод класса?
Не помещением классов в один модуль, а каким-либо другим способом возможно это сделать?


пока никак! в делфи придумали class-helper-ы.
единственный способ - всё в одном модуле.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: friend's

Сообщение А.Н. » 16.04.2010 16:21:33

Ого... Посмотрел что это такое.
Как-то не вдохновило:
В идеале хотелось бы иметь возможность добавлять не только методы но и свойства, тогда появился бы мощный механизм внесения функционала в совершенно разные классы без их изменения и применения наследования.

Такое подозрение, что если этим начнут пользоваться направо и налево (а, вероятно, начнут), программы, написанные на Delphi, читать станет невозможно. :(

Я имел ввиду методы friend, которые надо явно объявлять в классе, а не "подмешивания".
Например, есть коллекция сущностей. Коллекция их загружает/сохраняет.
Некоторые поля сущности - только для чтения.
Но коллекции надо дать доступ к этим полям, чтобы загрузить их из источника.
В сущности объявлен метод коллекции, как friend...
Доступ "ко всему в одном файле" очень не нравится. А делать "в обход" - тоже сложно и заумно.

Но за информацию спасибо. С какой версии это только я так и не понял...
А.Н.
постоялец
 
Сообщения: 230
Зарегистрирован: 13.03.2010 12:23:58


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru