Як отримати звернутися до поля класу (private) з регулярною

Як отримати звернутися до поля класу (private) з регулярною.

процедури, описаної в тому ж модулі що і клас.
Сабж.

Якщо процедура знаходиться в тому ж модулі, що і опис класу, то проблем, як раз-таки, бути не повинно. Обюращаться можна звичайним чином.

Трохи піду від полів в сторону методів класу.

type
TMyClass = class
# XA0; # XA0; public
# XA0; # XA0; # XA0; # XA0; function MyFunc (A: integer): integer;
end;

У тому ж модулі існує регулярна процедура:

function AnotherFunc (A: integer): integer;
begin
TMyClass.MyFunc (A); // так приблизно хочеться зробити мені
end;

Виникає помилка: This form of method call only allowed for class methods
Як бути?


> Процедура повинна бути членом класу, а не просто
> Лежати в тому ж модулі.

Не повинна.

TMyClass = class
..
# XA0; public
# XA0; # XA0; # XA0; class function MyFunc (A: integer): integer;
..

Ок працює, але знову виникає проблемма:
type
TMyClass = class
# XA0; # XA0; private
# XA0; # XA0; # XA0; FB: integer;
# XA0; # XA0; protected
# XA0; # XA0; # XA0; property B: integer read FB write FB;
# XA0; # XA0; # XA0; class function MyFunc (A: integer): integer;
end;

Як тепер тут:
class function MyFunc (A: integer): integer;
begin
# XA0; result: = A + B // ось так от зробити?
end;

Тобто звернутися до захищеного сво-ву класу. Таким ось чином компілятор пише, що Property "CurrProc" inaccessible here

PS. Перет тим як тиснути кнопки рекомендую вивчити теорію і зрозуміти, що ж ти в кінці кінців зробити хочеш.

Ви спробуйте, спробуйте.

Схожі статті