【问题标题】:Metaclass default argument value (Delphi 2009)元类默认参数值 (Delphi 2009)
【发布时间】:2015-09-13 20:49:56
【问题描述】:

我想在元类参数中给出一个默认值:

type
  TMyClass = class
  end;

type
  TMyClassMetaClass = class of TMyClass;

procedure MyProcedure(const AMetaClass: TMyClassMetaClass = TMyClass);

有可能吗?在 Delphi2009 中,它给了我错误:E2026 Constant expression expected

【问题讨论】:

    标签: delphi metaclass default-arguments


    【解决方案1】:

    根据语言规则,元类不是常量表达式。所以你最好的办法是改用重载:

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

    在实现中:

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

    【讨论】:

    • 谢谢,满足要求。
    • 您也可以设置默认值nil 并将nil 视为您想要的类。
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多