元类默认参数值(Delphi 2009)

5

我想在元类参数中设置默认值:

type
  TMyClass = class
  end;

type
  TMyClassMetaClass = class of TMyClass;

procedure MyProcedure(const AMetaClass: TMyClassMetaClass = TMyClass);

有可能吗?在Delphi2009中,它给我报错:E2026 需要常量表达式。
1个回答

6
根据语言规则,元类不是常量表达式。因此,您最好使用重载来代替:

根据语言规则,元类不是常量表达式。因此,您最好使用重载来代替:

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

在实现中:

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

procedure MyProcedure;
begin
  MyProcedure(TMyClass);
end;

谢谢,它满足了要求。 - Jonathan Olavarría
2
你也可以将默认值设置为 nil 并将 nil 视为所需的类。 - ZzZombo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接