我正在尝试将函数Sign()与DOUBLE变量一起使用,但是
给我错误信息“歧义的'签名'重载”。

尝试使用INTEGER变量或与此相关的任何变量时,也会发生这种情况。

为什么会这样,如何解决?

我使用的代码如下:

var
  CB : double;
  SignCB : TValueSign;
begin
  CB := Random(1000)-500;
  SignCB := Sign(CB);
end;

最佳答案

您尝试调用的Sign函数是 Math.Sign 。实际上,对于常用的数值类型,该函数有多个重载版本。

如果代码中唯一可见的SignMath单元中的重载,那么您将不会遇到该错误。唯一可能的结论是,您定义了另一个名为Sign的函数,该函数发生冲突。

一种解决方案是完全限定函数调用。调用Math.Sign()而不是Sign()

也许更好的解决方案是更改Sign函数的名称。通过使用与原始RTL函数相同的名称,您正在寻求将来的困惑。我建议您采取后一种行动。

关于delphi - 对 'sign' Delphi的模棱两可的重载调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26477148/

10-12 05:46