Классовые (вложенные) типы и видимость protected

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

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

Классовые (вложенные) типы и видимость protected

Сообщение and » 05.09.2011 14:35:43

Такой код:
Код: Выделить всё
Type
  TMyClass=Class
           Private
             Type
               TMyMemoryStream=Class(TCustomMemoryStream)
                               End;
           Public
             Procedure MyProc;
           End;
Procedure TMyClass.MyProc;
Begin
  with TMyMemoryStream.Create
    do SetPointer(nil,0)
End;
даёт ошибку компиляции Error: Identifier not found "SetPointer".
Однако если TMyMemoryStream объявить не внутри класса, а отдельно (ессно, в том же модуле), то обращение к protected полям и методам (TCustomMemoryStream.SetPointer объявлен как protected) компилируется и работает.
Несколько нелогичная imho разница в поведении. Если это фича, объясните plz её смысл. Если баг - повесьте, пожалуйста, репорт: я, к стыду своему, до сих пор багтрекером так и не пользовался.

P.S. FPC 2.5.1 20110808.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Классовые (вложенные) типы и видимость protected

Сообщение SAK » 05.09.2011 18:55:50

Я бы назвал багом возможность объявлять тип внутри объявления другого типа. FPC 2.4.2 так и говорит. И что даёт такое объявление кроме путаницы?
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Классовые (вложенные) типы и видимость protected

Сообщение and » 05.09.2011 19:38:18

2SAK: Даёт возможность сделать объект действительно целостной сущностью, содержащей всё ей необходимое. Это следующий вполне логичный шаг в развитии:
record - только поля; процедуры-функции их обработки находятся где-то в другом месте;
Object/Class - данные+методы. Но [strike]The Truth[/strike] описания типов этих данных - возможно, никому, кроме данного класса, не нужных и не интересных, - по-прежнему "is Out There".

Впрочем, не будем раздувать холивар по поводу пользы/вреда от новых фич языка. Такого добра и без этой темы хватает.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Классовые (вложенные) типы и видимость protected

Сообщение Ask » 06.09.2011 13:10:49

Баг уже давно в трекере: http://bugs.freepascal.org/view.php?id=18767
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Классовые (вложенные) типы и видимость protected

Сообщение and » 06.09.2011 16:25:58

2Ask: Thanks!
Date Submitted: 2011-02-16 21:25
Status: new

Мде :-/
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: Классовые (вложенные) типы и видимость protected

Сообщение Ask » 06.09.2011 17:17:47

Поправка: Павел Ишенин говорит, что во-первых, в трекере похожий, но не этот баг,
и что во-вторых он вроде как этот баг собирается пофиксить.
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Классовые (вложенные) типы и видимость protected

Сообщение and » 07.09.2011 21:48:39

Вижу, баг в трекере resolved.
Попутно узнал о существовании FPC 2.7.1 :-)
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь


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

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

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

Рейтинг@Mail.ru