Dom*_*mus 0 delphi protected delphi-xe2
我越来越
无法访问受保护的符号TParent.Test
用于以下代码:
在Unit1:
TParent = class
protected
function Test: TParent;
end;
implementation
function TParent.Test: TParent;
begin
Result := Self
end;
Run Code Online (Sandbox Code Playgroud)
在第2单元:
uses Unit1;
type
TChild = class(TParent)
end;
implementation
var c: TChild;
begin
c := TChild.Create;
c.Test.Test
end;
Run Code Online (Sandbox Code Playgroud)
TChild不应该可以访问返回值吗?
c.Test;
c.Test
Run Code Online (Sandbox Code Playgroud)
当然是有效的.
返回值是到年掳访问,但你正在尝试做的是通过年掳内的TParent这是微妙的不同访问它.
这样想吧.
c.Test是一个TParent,是吗?
现在假设你有一个像这样定义的TParent
var
c: TChild;
p: TParent
begin
c := TChild.Create;
p := c.Test;
p.Test;
end;
Run Code Online (Sandbox Code Playgroud)
这与您的代码完全相同.应该能够访问测试吗?不,因为它受到保护(并且在不同的单元中).