【发布时间】:2012-11-26 11:55:33
【问题描述】:
我想知道为什么嵌套类型的范围不包括 Delphi 中的派生类;它可以使代码更干净:
type
TBaseTest = class
public type
PVector = ^TVector;
TVector = record
A, B, R: Integer;
end;
public
procedure Execute(var Vector: TVector); virtual; abstract;
end;
TTestA = class(TBaseTest)
public
// E2003 Undeclared identifier: 'TVector'
procedure Execute(var Vector: TVector); override;
// workaround:
// procedure Execute(var Vector: TBaseTest.TVector); override;
end;
【问题讨论】:
-
我不会将您的“解决方法”称为解决方法。您如何区分作为两个不同类的嵌套类型的 TVector?虽然,不可否认,在派生类中它可以默认为基类型的 TVector...
-
我猜设计师想避免歧义。也许他们从多年使用可怕的
with声明中学到了东西。 -
可能的解决方案是引入“密封”嵌套类型,即不能在派生类中重新声明的类型。