2015-06-26 2 views
5

Я хочу, чтобы дать значение по умолчанию в метаклассе аргументе:метаклассы по умолчанию значения аргумента (Delphi 2009)

type 
    TMyClass = class 
    end; 

type 
    TMyClassMetaClass = class of TMyClass; 

procedure MyProcedure(const AMetaClass: TMyClassMetaClass = TMyClass); 

Это возможно? В Delphi2009 это дает мне ошибку: E2026 Ожидаемое выражение константы

ответ

6

Согласно правилам языка, метакласс не является постоянным выражением. Поэтому лучше всего использовать перегрузки вместо:

procedure MyProcedure(const AMetaClass: TMyClassMetaClass); overload; 
procedure MyProcedure; overload; 

И в реализации:

procedure MyProcedure(const AMetaClass: TMyClassMetaClass); 
begin 
    .... 
end; 

procedure MyProcedure; 
begin 
    MyProcedure(TMyClass); 
end; 
+0

Спасибо, это выполнить requierement. –

+2

Вы также можете сделать значение по умолчанию 'nil' и обработать' nil' как ваш желаемый класс. – ZzZombo

 Смежные вопросы

  • Нет связанных вопросов^_^