İç içe türlerin kapsamının neden Delphi'de türetilmiş sınıflar içermediğini merak ediyorum; o kod daha temiz yapabilir: Yanılmıyorsam eğer TBaseTest içinde TVertor yazarken bölümünü kullanır içindeYuvalanmış türlerin kapsamı türetilmiş sınıfları neden içermez?
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;
Geçici çözümünüzü bir geçici çözüm olarak görmem. TVektörün iki farklı sınıfın iç içe geçmiş türleri arasında nasıl ayırt edersiniz? Her ne kadar kuşkusuz ki, türetilmiş sınıflarda, temel tipin TV oynatıcısına varsayılan olarak ... –
tasarımcıların belirsizlikten kaçınmak istediğini tahmin edebilirim. Belki de yıllar önce “with” ifadesiyle çalışmayı öğrendiler. –
Olası çözüm, 'mühürlü' iç içe geçmiş türleri, yani türetilmiş sınıflarda yeniden bildirilemeyen türleri tanıtıyor. – kludg