Массив процедур внутри класса, указывающий на метод класса - PullRequest
1 голос
/ 25 сентября 2010

У меня есть класс (TExample), и я хочу иметь массив указателей, которые указывают на методы TExample. Например, я хотел бы иметь TExample.ThinkOne и сделать aPointers [1]: = @ TExample.ThinkOne или что-то подобное. Как я могу правильно сделать это? Спасибо.

1 Ответ

2 голосов
/ 25 сентября 2010

Вы можете сделать что-то вроде этого:

type
  TProcType = procedure(const AParm: Integer) of object; // Method type
  TProcArray = array of TProcType; // Dynamic array 
  TExample = class
  public
    procedure A(const AParm: Integer); // Method signature matches TProcType
    procedure B(const AParm: Integer);
  end;

var
  pa : TProcArray;

procedure Init(const AExample: TExample);
begin
  SetLength(pa, 2);
  pa[0] := AExample.A;
  pa[1] := AExample.B;
end;      
...