私は現在、コンパイル エラーで立ち往生しています。私たちの会社の誰も助けることができません。悲しいことに、SO または Google の正しい検索パターンが見つかりません。
コードとして、継承された 2 つのインターフェイスと継承された 2 つのクラスを使用しています。次のコードは、エラーを再現します。
program Project22;
{$APPTYPE CONSOLE}
type
IStorageObject = interface(IInterface)
end;
TObjectStorage<T: IStorageObject> = class(TObject)
end;
IKeyStorageObject<TKey> = interface(IStorageObject)
end;
TKeyObjectStorage<TKey, T: IKeyStorageObject<TKey>> = class(TObjectStorage<T>)
end;
TImplementingClass<TKey> = class(TInterfacedObject, IKeyStorageObject<TKey>)
end;
begin
TKeyObjectStorage<Integer, TImplementingClass<Integer>>.Create;
end.
「TKeyObjectStorage」のコンパイラ エラーは次のとおりです。
[DCC エラー] Project22.dpr(11): E2514 型パラメーター 'T' はインターフェイス 'IStorageObject' をサポートする必要があります
私が思うに、コンパイラはクラス 'TKeyObjectStorage' のパラメータ T を正しく認識していません。必要なタイプ「IKeyStorageObject」には親タイプ IStorageObject があるため、正しいはずです。
なぜこれが機能しないのですか?私は何を間違っていますか?これは Delphi では不可能ですか?