【发布时间】:2016-10-24 17:20:58
【问题描述】:
假设我有一个这样的界面:
IMaker = interface
function Make(const Int: Integer): IInterface; overload;
function Make(const Str: String): IInterface; overload;
end;
实现这个接口的常用方式如下:
TMaker = class(TInterfacedObject, IMaker)
public
function Make(const Int: Integer): IInterface; overload;
function Make(const Str: String): IInterface; overload;
end;
但是如果我出于某些原因想使用method resolution clauses 怎么办?我的第一个猜测是这样的:
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;
此代码无法编译,因为方法解析子句中不允许使用参数列表。
这种情况下的语法是什么样子的?是否可以对重载的方法使用方法解析子句?
【问题讨论】: