gpt4 book ai didi

delphi - 如何使用类助手来访问类的严格私有(private)成员?

转载 作者:行者123 更新时间:2023-12-03 14:33:44 25 4
gpt4 key购买 nike

这是以下问题的后续问题:How to hide a protected procedure of an object?
(我对整个类助手的概念有点模糊)

假设我有一个类:

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

我知道如果我有源代码,可以通过在同一单元中添加后代类来访问私有(private)方法。

我有两个问题:
- 如何使用类助手来访问strict private成员?
- 我可以在单独单元中使用类助手来访问(严格)私有(private)成员吗?

最佳答案

直到 Delphi 10.0 Seattle(包括 Delphi 10.0 Seattle)之前,您可以使用类助手来访问 strict protectedstrict private 成员,如下所示:

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;

但是,从 Delphi 10.1 Berlin 开始,这不再起作用!类助手无法再访问 strict protectedstrict privateprivate 成员。这个“功能”实际上是一个编译器错误,Embarcadero 现已在柏林修复。你运气不好。

关于delphi - 如何使用类助手来访问类的严格私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com