현재 컴파일 오류가 발생했습니다. 아무도 저희 회사에서 도움을 줄 수 없으며 슬프게도 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 Error] Project22.dpr(11): E2514 Type parameter 'T' must support interface 'IStorageObject'
나는 컴파일러가 인식되지 않는다는 생각 무슨 클래스 'TKeyObjectStorage의 매개 변수 T '제대로. 원하는 유형 'IKeyStorageObject'에 상위 유형 IStorageObject가 있으므로 올바른 값이어야합니다.
왜 작동하지 않습니까? 내가 도대체 뭘 잘못하고있는 겁니까? 델파이에서는 이것이 불가능합니까?
을! :
documentation이 마음에게 정보를 포함하고 있는가? 그 콤마를 세미콜론으로 바꾸셨습니까? !! 그리고 게시 한 코드가 여전히 오류를 표시하기에 충분하지 않습니다.제발 ** 제안한 일을하고 ** 완전한 프로그램 **을 게시하십시오. 내 대답에서 당신을 보여 줬어. –
이 데이비드를 유감스럽게 생각합니다. 그렇습니다. 그러나 ','는이 오류를 던지지 않았으며 단지 사소한 감독이었습니다. 다시 시끄러워. – Hugie
@ 휴지 (Hugie), 원래의 문제에서 벗어나기 위해 질문을 변경하지 마십시오. 원래의 모든 오류는 질문에 머물러 있어야합니다. 그러나 최소한의 코드로 콘솔 앱을 만들어 문제를 시연하십시오. 붙여 넣기 ** 해당 ** 콘솔 애플 리케이션의 질문에. – Johan