...
лкиваюсь с тем, что кажется очень классической проблемой: элемент и класс коллекции, ссылающиеся друг на друга, требуют предварительного объявления. Я использую Delphi 2010 с обновлением 5.
Это хорошо работает с не универсальными классами, но я не могу обойти ошибку E2086 с универсальными типами:
type
// Forward declarations
TMyElement = class; // E2086: Type 'TMyElement' is not yet completely defined
TMyCollection<T:TMyElement> = class
//
end;
TMyElement = class
FParent: TMyCollection<TMyElement>;
end;
Та же проблема возникает при переключении порядка объявления класса.
Я не нашел никаких ссылок на эту проблему здесь или в QualityCentral (были обнаружены другие проблемы с E2086, но не связанные с этим вариантом использования)
Единственный обходной путь, который у меня есть сейчас, - это объявить родительский объект как TObject и при необходимости привести его к универсальному типу коллекции (не чистое решение ...)
Как вы обошли эту проблему или заранее объявили свои общие классы?
Спасибо,
[Изменить 22 октября 2011 г.] Последующие действия на QualityCentral: Я сообщил об этой ошибке в качестве центральногоВот
Это было недавно закрыто EMB со следующим состоянием разрешения: Разрешение: Как спроектировано Решено в сборке: 16.0.4152
У меня только Delphi 2010. Может ли кто-нибудь подтвердить, что он был исправлен в Delphe XE2 Update1, или это означает, что он работает «как положено»?
[Изменить 23 октября 2011] Окончательный ответ от EMB: Сегодня EMB подтвердил, что использование предварительного объявления универсального типане поддерживается фактическим компилятором Delphi. Вы можете увидеть их ответ в QC, по ссылке, указанной выше.