/ / Warum enthält der Geltungsbereich verschachtelter Typen keine abgeleiteten Klassen? - Delphi, Typen, verschachtelt

Warum enthält der geschachtelte Typenbereich keine abgeleiteten Klassen? - Delphi, Typen, verschachtelt

Ich frage mich, warum der Umfang verschachtelter Typen keine abgeleiteten Klassen in Delphi umfasst. es könnte den Code sauberer machen:

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;

Antworten:

0 für die Antwort № 1

Wenn ich mich nicht irre, wenn du TVertor in schreibstTBaseTest, der Compiler sucht zuerst in dieser Klasse, dann in dieser Unit und dann in Modulen im Abschnitt Uses. Aus diesem Grund können Sie einen einfachen TVector schreiben, dh TBaseTest.TVector.

Wenn Sie eine Klasse TTestA schreiben, abgeleitet vonTBaseTest und benutze dort TVector, es sieht zuerst in TTestA aus (es gibt keinen TVector), dann in diesem Modul (es gibt auch keinen TVector), dann in Uses. Wenn Sie die innere Klasse von TBaseTest verwenden möchten, sollten Sie TBaseTest.TVector direkt schreiben, da TVector in TBaseTest und nicht in TTestA definiert ist.