Jon*_*ría 5 delphi metaclass default-arguments
我想在metaclass参数中给出一个默认值:
type
TMyClass = class
end;
type
TMyClassMetaClass = class of TMyClass;
procedure MyProcedure(const AMetaClass: TMyClassMetaClass = TMyClass);
Run Code Online (Sandbox Code Playgroud)
有可能的?在Delphi2009中它给出了错误:E2026预期的常量表达式
根据语言规则,元类不是一个常量表达式.所以你最好的选择是使用重载:
procedure MyProcedure(const AMetaClass: TMyClassMetaClass); overload;
procedure MyProcedure; overload;
Run Code Online (Sandbox Code Playgroud)
并在实施中:
procedure MyProcedure(const AMetaClass: TMyClassMetaClass);
begin
....
end;
procedure MyProcedure;
begin
MyProcedure(TMyClass);
end;
Run Code Online (Sandbox Code Playgroud)