gpt4 book ai didi

delphi - 处理具有不明确参数的重载函数

转载 作者:行者123 更新时间:2023-12-03 14:39:45 24 4
gpt4 key购买 nike

以这个小示例类为例(不是我的真实代码,但它暴露了问题):

Convert = class(TObject)
public
class function ToString(value: Double): String; overload;
class function ToString(value: TDateTime): String; overload;
end;

它编译得很好,直到您尝试使用 DoubleTDateTime 函数在:

var
d: Double;
begin
d := 99.99;
ShowMessage(Convert.ToString(d));

您将收到此编译错误:对“ToString”的重载调用不明确。问题归结为 TDateTimeDouble

的一种类型

我的问题:您如何处理此类问题?

编辑 - 我不是在寻找给定示例的解决方案

到目前为止我已经找到了 3 个解决方案:

  • 重命名 2 个函数之一
  • 向 2 个函数之一添加“虚拟”参数
  • 将参数更改为 Var 类型,这样做的缺点是我无法再使用常量调用此函数

还有其他解决方案吗?

最佳答案

重载方法可能非常有效。然而,一旦出现一丝含糊之处,它们就会成为一种负担。 XE3 中引入的新 TStream 重载就是一个很好的例子。陷入编译器选择您没有预料到的重载的陷阱并不难。至少在你的代码中编译器停止了。从这个意义上说,你很幸运。

因此,根据您的情况,我的建议是放弃重载。在方法名称中表达不同的输入类型。是的,它有点冗长,但你不会犯任何错误,而且你的代码会编译!

关于delphi - 处理具有不明确参数的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com