Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обращение к полю/методу класса из вложенного класса / 25 сообщений из 28, страница 1 из 2
26.03.2021, 15:41
    #40057179
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Например:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 там какой-нибудь
или ещё как?
...
Рейтинг: 0 / 0
26.03.2021, 15:49
    #40057181
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_avz
например parent там какой-нибудь

Нужно что-бы кто его создал и присвоил ему значение.
...
Рейтинг: 0 / 0
26.03.2021, 15:50
    #40057183
Zelius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_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.

т.е. только передать указатель на экземпляр внешнего класса
...
Рейтинг: 0 / 0
26.03.2021, 16:02
    #40057189
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
добавь в родительский класс свойство типа TNested и обращайся к этому свойству
...
Рейтинг: 0 / 0
26.03.2021, 16:13
    #40057190
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Понятно.
...
Рейтинг: 0 / 0
26.03.2021, 16:24
    #40057194
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_avz
Например:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 там какой-нибудь
или ещё как?


а зачем такие извращения ?
...
Рейтинг: 0 / 0
26.03.2021, 16:28
    #40057196
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
26.03.2021 16:24, defecator пишет:
> а зачем такие извращения ?

стильно! модно! молодёжно! ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.03.2021, 16:40
    #40057200
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
defecator,

в частном случае внутренний класс - это поток (потомок TThread), который выполняет методы внешнего класса.
Это упрощённая схема. На деле немного сложнее.
...
Рейтинг: 0 / 0
26.03.2021, 16:44
    #40057201
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
26.03.2021 16:40, _avz пишет:
> в частном случае внутренний класс - это поток, который выполняет методы внешнего класса.
> Это упрощённая схема. На деле немного сложнее.

ради синтаксического шугара обложил себя заборами, а теперь мужественно преодолеваешь препятствия.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.03.2021, 16:48
    #40057203
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_avz
Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь или ещё как?
Можно обращаться к классовым методам внешнего класса. К инстансовым, только через конкретный инстанс.
...
Рейтинг: 0 / 0
26.03.2021, 16:49
    #40057204
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Мимопроходящий,

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

Объявить бы его в implementation, но тогда его нельзя использовать в декларации главного класса,
(который в interface)
...
Рейтинг: 0 / 0
26.03.2021, 16:51
    #40057206
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Мимопроходящий
ради синтаксического шугара обложил себя заборами
Да ладно. Весь шугар в том, что повышается уровень инкапсуляции и внутренний класс никто кроме внешнего класса не видит. А так это неотличимо от
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
TNested = class
  procedure Test;
end;

TMain = class
private
  procedure MainProc;
end;
...
Рейтинг: 0 / 0
26.03.2021, 16:51
    #40057207
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_Vasilisk_
_avz
Есть ли способ обратиться с помощью какого-нибудь ключевого слова типа self, например parent там какой-нибудь или ещё как?
Можно обращаться к классовым методам внешнего класса. К инстансовым, только через конкретный инстанс.

Да, для меня эта тема уже прояснилась.
...
Рейтинг: 0 / 0
26.03.2021, 16:52
    #40057208
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
...
Рейтинг: 0 / 0
26.03.2021, 16:53
    #40057210
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
26.03.2021 16:49, _avz пишет:
> мне надо, чтоб доступа к вложенному классу не было.

чем тебе private (strict) не угодил?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.03.2021, 16:53
    #40057212
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_avz
Да, для меня эта тема уже прояснилась.
И это
_avz
Код: pascal
1.
class TNested = class

лишнее. Все вложенные типы и константы уже являются классовыми
...
Рейтинг: 0 / 0
26.03.2021, 16:54
    #40057214
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
_Vasilisk_
_avz
Да, для меня эта тема уже прояснилась.
И это
_avz
Код: pascal
1.
class TNested = class

лишнее. Все вложенные типы и константы уже являются классовыми

это описка
...
Рейтинг: 0 / 0
26.03.2021, 16:55
    #40057215
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Мимопроходящий
чем тебе private (strict) не угодил?
Где? Он его и объявил в секции strict private
...
Рейтинг: 0 / 0
26.03.2021, 16:56
    #40057216
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Мимопроходящий

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

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


имеется в виду доступ из других модулей.
...
Рейтинг: 0 / 0
26.03.2021, 16:58
    #40057217
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
DarkMaster

Во! Это про меня.
...
Рейтинг: 0 / 0
26.03.2021, 16:59
    #40057218
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
26.03.2021 16:56, _avz пишет:
> имеется в виду доступ из других модулей.

ну и?
как ты собрался к привату обращаться из других модулей?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.03.2021, 17:02
    #40057219
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
Мимопроходящий

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

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


Класс TNested, если не сделать внутренним, можно будет использовать в других модулях
...
Рейтинг: 0 / 0
26.03.2021, 17:05
    #40057222
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
26.03.2021 17:02, _avz пишет:
> Класс TNested, если не сделать внутренним, можно будет использовать в других модулях

а, тебя волнует декларация...
не чеши её!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.03.2021, 07:37
    #40057329
registered
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
А мне понадобилось, а тролли сказали, что не нужно, потому что мы не знаем.
А я думал, на SQL.ru нет троллей.

"в частном случае внутренний класс - это поток (потомок TThread), который выполняет методы внешнего класса."
то же самое
...
Рейтинг: 0 / 0
27.03.2021, 09:41
    #40057339
_avz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к полю/методу класса из вложенного класса
registered,

что не так?
Это невиданное кощунство: объявить тред вложенным классом?
От церкви дельфи отлучат?
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обращение к полю/методу класса из вложенного класса / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]