以这个小示例类为例(不是我的真实代码,但它暴露了问题):
Convert = class(TObject)
public
class function ToString(value: Double): String; overload;
class function ToString(value: TDateTime): String; overload;
end;
在您尝试使用Double
或TDateTime
函数之前,它编译得很好:
var
d: Double;
begin
d := 99.99;
ShowMessage(Convert.ToString(d));
您将收到此编译错误:对“ToString”的模糊重载调用。问题归结为一个TDateTime
事实Double
我的问题:您如何处理此类问题?
编辑 - 我不是在为给出的例子寻找解决方案
到目前为止,我找到了 3 个解决方案:
- 重命名 2 个函数之一
- 将“虚拟”参数添加到 2 个函数之一
- 将参数更改为 Var 类型,这样做的缺点是我不能再用常量调用此函数
还有其他解决方案吗?