delphi – 如何使用类帮助程序来访问类的严格私有成员?

前端之家收集整理的这篇文章主要介绍了delphi – 如何使用类帮助程序来访问类的严格私有成员?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个后续问题: How to hide a protected procedure of an object?
(我对整个类帮助器概念有点模糊)

假设我有一个类:

type 
TShy = class(TObject) 
strict private
  procedure TopSecret;
private
  procedure DirtyLaundry;  
protected 
  procedure Resistanttochange;
end;

我知道我可以访问私有方法,如果我有源代码通过在同一单元中添加一个派生类。

我有2个问题:
– 如何使用类助手访问严格的私有成员?
– 我可以在单独的单元中使用类辅助程序来访问(严格)私有成员吗?

解决方法

直到,包括Delphi 10.0 Seattle,你可以使用类助手来访问严格的受保护和严格的私有成员,像这样:
unit Shy;

interface

type
  TShy = class(TObject)
  strict private
    procedure TopSecret;
  private
    procedure DirtyLaundry;
  protected
    procedure Resistanttochange;
  end;
unit NotShy;

interface

uses
  Shy;

type
  TNotShy = class helper for TShy
  public
    procedure LetMeIn;
  end;

implementation

procedure TNotShy.LetMeIn;
begin
  Self.TopSecret;
  Self.DirtyLaundry;
  Self.Resistanttochange;
end;

end.
uses
  ...,Shy,NotShy;

procedure TestShy;
var
  Shy: TShy;
begin
  Shy := TShy.Create;
  Shy.LetMeIn;
  Shy.Free;
end;

然而,从德尔福10.1柏林开始,这不再工作!类助手不能再访问严格受保护的,严格的私人或私人成员。这个“功能”实际上是Embarcadero现在在柏林修复的一个编译器错误。你失去了运气。

原文链接:https://www.f2er.com/delphi/103620.html

猜你在找的Delphi相关文章