Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
Например:

TMain = class
private type
  class TNested = class
    procedure Test;
  end;
private
  procedure MainProc;
end;
...
procedure TMain.TNested.Test;
begin
  MainProc; // здесь ошибка: ...inaccesible here
end;


Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь
или ещё как?
26 мар 21, 15:41    [22300403]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27064
_avz
например parent там какой-нибудь

Нужно что-бы кто его создал и присвоил ему значение.
26 мар 21, 15:49    [22300407]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1542
_avz,

Nested Type Declarations
автор
The normal accessibility rules apply to nested types and their containing types. A nested type can access an instance variable (field, property, or method) of its container class, but it must have an object reference to do so. A nested type can access class fields, class properties, and class static methods without an object reference, but the normal Delphi visibility rules apply.

т.е. только передать указатель на экземпляр внешнего класса
26 мар 21, 15:50    [22300409]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15181
добавь в родительский класс свойство типа TNested и обращайся к этому свойству
26 мар 21, 16:02    [22300418]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
Понятно.
26 мар 21, 16:13    [22300424]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
defecator
Member

Откуда:
Сообщений: 39749
_avz
Например:

TMain = class
private type
  class TNested = class
    procedure Test;
  end;
private
  procedure MainProc;
end;
...
procedure TMain.TNested.Test;
begin
  MainProc; // здесь ошибка: ...inaccesible here
end;



Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь
или ещё как?


а зачем такие извращения ?
26 мар 21, 16:24    [22300431]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32207

26.03.2021 16:24, defecator пишет:
> а зачем такие извращения ?

стильно! модно! молодёжно! ©

Posted via ActualForum NNTP Server 1.5

26 мар 21, 16:28    [22300433]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
defecator,

в частном случае внутренний класс - это поток (потомок TThread), который выполняет методы внешнего класса.
Это упрощённая схема. На деле немного сложнее.

Сообщение было отредактировано: 26 мар 21, 16:34
26 мар 21, 16:40    [22300438]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32207

26.03.2021 16:40, _avz пишет:
> в частном случае внутренний класс - это поток, который выполняет методы внешнего класса.
> Это упрощённая схема. На деле немного сложнее.

ради синтаксического шугара обложил себя заборами, а теперь мужественно преодолеваешь препятствия.

Posted via ActualForum NNTP Server 1.5

26 мар 21, 16:44    [22300439]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12789
_avz
Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь или ещё как?
Можно обращаться к классовым методам внешнего класса. К инстансовым, только через конкретный инстанс.
26 мар 21, 16:48    [22300441]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
Мимопроходящий,

мне надо, чтоб доступа к вложенному классу не было.

Объявить бы его в implementation, но тогда его нельзя использовать в декларации главного класса,
(который в interface)
26 мар 21, 16:49    [22300442]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12789
Мимопроходящий
ради синтаксического шугара обложил себя заборами
Да ладно. Весь шугар в том, что повышается уровень инкапсуляции и внутренний класс никто кроме внешнего класса не видит. А так это неотличимо от
TNested = class
  procedure Test;
end;

TMain = class
private
  procedure MainProc;
end;
26 мар 21, 16:51    [22300444]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
_Vasilisk_
_avz
Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь или ещё как?
Можно обращаться к классовым методам внешнего класса. К инстансовым, только через конкретный инстанс.

Да, для меня эта тема уже прояснилась.
26 мар 21, 16:51    [22300445]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6463
Картинка с другого сайта.
26 мар 21, 16:52    [22300446]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32207

26.03.2021 16:49, _avz пишет:
> мне надо, чтоб доступа к вложенному классу не было.

чем тебе private (strict) не угодил?

Posted via ActualForum NNTP Server 1.5

26 мар 21, 16:53    [22300448]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12789
_avz
Да, для меня эта тема уже прояснилась.
И это
_avz
class TNested = class
лишнее. Все вложенные типы и константы уже являются классовыми
26 мар 21, 16:53    [22300450]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
_Vasilisk_
_avz
Да, для меня эта тема уже прояснилась.
И это
_avz
class TNested = class
лишнее. Все вложенные типы и константы уже являются классовыми

это описка
26 мар 21, 16:54    [22300452]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12789
Мимопроходящий
чем тебе private (strict) не угодил?
Где? Он его и объявил в секции strict private
26 мар 21, 16:55    [22300453]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
Мимопроходящий

26.03.2021 16:49, _avz пишет:
> мне надо, чтоб доступа к вложенному классу не было.

чем тебе private (strict) не угодил?


имеется в виду доступ из других модулей.
26 мар 21, 16:56    [22300456]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
DarkMaster
Картинка с другого сайта.

Во! Это про меня.
26 мар 21, 16:58    [22300458]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32207

26.03.2021 16:56, _avz пишет:
> имеется в виду доступ из других модулей.

ну и?
как ты собрался к привату обращаться из других модулей?

Posted via ActualForum NNTP Server 1.5

26 мар 21, 16:59    [22300460]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
Мимопроходящий

26.03.2021 16:56, _avz пишет:
> имеется в виду доступ из других модулей.

ну и?
как ты собрался к привату обращаться из других модулей?


Класс TNested, если не сделать внутренним, можно будет использовать в других модулях
26 мар 21, 17:02    [22300462]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32207

26.03.2021 17:02, _avz пишет:
> Класс TNested, если не сделать внутренним, можно будет использовать в других модулях

а, тебя волнует декларация...
не чеши её!

Posted via ActualForum NNTP Server 1.5

26 мар 21, 17:05    [22300468]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
registered
Member

Откуда:
Сообщений: 87
А мне понадобилось, а тролли сказали, что не нужно, потому что мы не знаем.
А я думал, на SQL.ru нет троллей.

"в частном случае внутренний класс - это поток (потомок TThread), который выполняет методы внешнего класса."
то же самое
27 мар 21, 07:37    [22300667]     Ответить | Цитировать Сообщить модератору
 Re: Обращение к полю/методу класса из вложенного класса  [new]
_avz
Member

Откуда: Пермь
Сообщений: 2842
registered,

что не так?
Это невиданное кощунство: объявить тред вложенным классом?
От церкви дельфи отлучат?
27 мар 21, 09:41    [22300684]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить