2010-09-25 3 views
1

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

+0

Вам не нужен префикса ваших вопросов с '[DELPHI]'. Для этого нужны теги. – splash

ответ

2

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

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;  
Смежные вопросы