我想知道为什么嵌套类型的范围不包括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;
答案 0 :(得分:0)
如果我没有弄错,当你在TBaseTest中编写TVertor时,编译器首先在这个类中查找它,然后在这个单元中,然后在Uses部分的模块中查找。这就是为什么你可以写简单的TVector,意思是TBaseTest.TVector。
当你写一个TTestA课程,派生自TBaseTest,并在那里使用TVector时,它首先在TTestA中看到(没有TVector),然后在这个模块中(也没有TVector),然后在Uses中。如果你想使用TBaseTest的内部类,你应该直接写TBaseTest.TVector,因为TVector是在TBaseTest中定义的,而不是在TTestA中。