我目前遇到编译错误,我们公司没有人可以提供帮助,遗憾的是我找不到 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。
为什么这不起作用?我究竟做错了什么?这在德尔福不可能吗?