我正在尝试将函数Sign()与DOUBLE变量一起使用,但是
给我错误信息“歧义的'签名'重载”。
尝试使用INTEGER变量或与此相关的任何变量时,也会发生这种情况。
为什么会这样,如何解决?
我使用的代码如下:
var
CB : double;
SignCB : TValueSign;
begin
CB := Random(1000)-500;
SignCB := Sign(CB);
end;
最佳答案
您尝试调用的Sign
函数是 Math.Sign
。实际上,对于常用的数值类型,该函数有多个重载版本。
如果代码中唯一可见的Sign
是Math
单元中的重载,那么您将不会遇到该错误。唯一可能的结论是,您定义了另一个名为Sign
的函数,该函数发生冲突。
一种解决方案是完全限定函数调用。调用Math.Sign()
而不是Sign()
。
也许更好的解决方案是更改Sign
函数的名称。通过使用与原始RTL函数相同的名称,您正在寻求将来的困惑。我建议您采取后一种行动。
关于delphi - 对 'sign' Delphi的模棱两可的重载调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26477148/