作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个像这样的界面:
IMaker = interface
function Make(const Int: Integer): IInterface; overload;
function Make(const Str: String): IInterface; overload;
end;
实现此接口(interface)的常见方法如下所示:
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;
此代码无法编译,因为方法解析子句中不允许使用参数列表。
这种情况下的语法是什么样的?是否可以对重载方法使用方法解析子句?
最佳答案
您的问题已给出答案:
parameter lists are not allowed in method resolution clauses
参数列表对于解决重载是必需的,并且由于不能在方法解析子句中指定参数列表,因此不能对重载方法使用方法解析子句。没有语法来支持您所要求的内容。
关于delphi - 如何为重载接口(interface)方法创建解析子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40224018/
我是一名优秀的程序员,十分优秀!