给出以下示例,有没有什么方法可以使类TPrivateUseOnly
私有化。将其移至implementation
部分?恕我直言,这是不可能的。但是我不确定是否错过了新一代Delphi语言的某些OOP功能。
unit Unit1;
interface
type
TPrivateUseOnly = class(TObject)
end;
TMyClass = class(TObject)
strict private
FXYZ: TPrivateUseOnly;
public
...
end;
implementation
end.
最佳答案
您可以创建一个嵌套类。如果将此类放在严格的私有部分中,那么它将无法用于任何其他单元:
type
TMyClass = class(TObject)
strict private
type
TPrivateUseOnly = class(TObject)
test: boolean;
end;
strict private
FXYZ: TPrivateUseOnly;
public
...
end;
如果然后尝试在另一个单元中访问私有类,则会收到以下错误:
[DCC Error] Unit1.pas(28): E2361 Cannot access private symbol TMyClass.TPrivateUseOnly
当您在TMyClass中引用嵌套类时,可以使用
TPrivateUseOnly
访问它。如果需要在设备内部访问它,则它必须为private
,并且可以使用TMyClass.TPrivateUseOnly
访问它。