【问题标题】:Overloading global functions in helpers在助手中重载全局函数
【发布时间】:2017-07-31 14:21:17
【问题描述】:

我正在为TPoint 添加一些函数,如果我使用与全局函数相同的名称,我无法在辅助函数中看到它。我是否遗漏了什么,或者我不能简单地做到这一点?

uses 
  Winapi.Windows, Math;

type
  TPointHelper = record helper for TPoint
    function InRange(const AMin, AMax: TPoint): Boolean;
  end;

implementation

function TPointHelper.InRange(const AMin, AMax: TPoint): Boolean;
begin
  Result := InRange(X, AMin.X, AMax.X) and InRange(Y, AMin.Y, AMax.Y);
end;

end.

【问题讨论】:

    标签: delphi delphi-xe6


    【解决方案1】:

    您需要完全限定对InRange 的调用,因为编译器会在最近的范围内看到InRange。这是您的辅助方法。您的代码应为:

    function TPointHelper.InRange(const AMin, AMax: TPoint): Boolean;
    begin
      Result := Math.InRange(X, AMin.X, AMax.X) and Math.InRange(Y, AMin.Y, AMax.Y);
    end;
    

    【讨论】:

    • 有没有可能在同一单元内使用InRange的重载函数?
    • 你也可以这样做,使用单位名称来完全限定名称
    • 谢谢它的工作。我真的以为,当函数在同一个单元中时,我不需要完全限定名称。
    • 你通常不会,除非你用方法把它带出范围
    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多