omo definir uma declaração de encaminhamento com tipos genéricos no Delphi 201
Eu me deparo com o que parece ser um problema muito clássico: um item e uma classe de coleção, ambos referenciando um ao outro, que exigem uma declaração de encaminhamento. Estou usando o Delphi 2010 com a atualização 5.
Isso funciona bem com classes não genéricas, mas não consigo solucionar o erro E2086 com tipos genéricos:
type
// Forward declarations
TMyElement = class; // E2086: Type 'TMyElement' is not yet completely defined
TMyCollection<T:TMyElement> = class
//
end;
TMyElement = class
FParent: TMyCollection<TMyElement>;
end;
O mesmo problema ocorre ao alternar a ordem da declaração de class
Não encontrei nenhuma referência a esse problema aqui ou no QualityCentral (outros problemas com o E2086 foram encontrados, mas não relacionados a este caso de uso)
única solução alternativa que tenho por enquanto é declarar o pai como TObject e convertê-lo no tipo genérico da coleção quando necessário (não uma solução limpa ..
Como você resolveu esse problema ou declarou antecipadamente suas classes genéricas?
Obrigado
[Editar em 22 de outubro de 2011] Acompanhe o QualityCentral: Relatei esse bug na central de qualidadeAqu
Este foi fechado recentemente pelo EMB com o seguinte status de resolução: Resolução: conforme projetado Resolvido na compilação: 16.0.4152
Eu só tenho o Delphi 2010. Alguém poderia confirmar que foi corrigido no Delphe XE2 Update1 ou significa que funciona 'como esperado'?
[Editar em 23 de outubro de 2011] Resposta final da EMB: EMB confirmou hoje que o uso de declaração direta de um tipo genérico énão suportad pelo compilador Delphi atual. Você pode ver a resposta deles no QC, com o link fornecido acima.