これはかなり単純に見えますが、構文の接着剤が少し欠けているだけかもしれません...これが私の単純な一般的な(Delphi XE3)の例です:
unit Unit1;
interface
uses
generics.collections;
type
X = class
public
Id: Integer;
end;
XList<T : X> = class( TObjectList<T> )
function Find(Id: Integer) : T;
end;
Y = class(X)
end;
YList = class(XList<Y>)
end;
implementation
{ XList<T> }
function XList<T>.Find(Id: Integer): T;
var
t: X;
begin
for t in Self do
if t.Id = Id then
Result := t;
end;
end.
これは、「[dcc32 エラー] Unit1.pas(41): E2010 Incompatible types: 'Y' and 'X'」でコンパイルされません。それは次の行までです。
YList = class(XList<Y>)
end;
Y は X から派生しているのに、なぜ問題があるのでしょうか?