假设我有一个像这样的界面:
IMaker = interface
function Make(const Int: Integer): IInterface; overload;
function Make(const Str: String): IInterface; overload;
end;
Run Code Online (Sandbox Code Playgroud)
实现此接口的常见方法如下所示:
TMaker = class(TInterfacedObject, IMaker)
public
function Make(const Int: Integer): IInterface; overload;
function Make(const Str: String): IInterface; overload;
end;
Run Code Online (Sandbox Code Playgroud)
但是,如果我出于某些原因想要使用方法解决条款呢?我的第一个猜测看起来像这样:
TMaker = class(TInterfacedObject, IMaker)
private
function MakeByInt(const Int: Integer): IInterface;
function MakeByStr(const Str: String): IInterface;
public
function IMaker.Make(const Int: Integer) = MakeByInt;
function IMaker.Make(const Str: String) = MakeByStr;
end;
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,因为方法解析子句中不允许使用参数列表.
在这种情况下语法如何?甚至可以将方法解析子句用于重载方法吗?
你的问题说明了答案:
方法解析子句中不允许使用参数列表
参数列表是解决重载所必需的,并且由于您无法在方法解析子句中指定参数列表,因此不能对重载方法使用方法解析子句.没有语法支持您的要求.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |