加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 05:21:38 所属栏目:大数据 来源:网络整理
导读:这是一个后续问题: How to hide a protected procedure of an object? (我对整个类帮助器概念有点模糊) 假设我有一个类: type TShy = class(TObject) strict private procedure TopSecret;private procedure DirtyLaundry; protected procedure ResistantT
这是一个后续问题: 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现在在柏林修复的一个编译器错误。你失去了运气。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读