2015-06-26 35 views
5

我想給在元類參數的默認值:元類的默認參數值(德爾福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