...

лкиваюсь с тем, что кажется очень классической проблемой: элемент и класс коллекции, ссылающиеся друг на друга, требуют предварительного объявления. Я использую 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, по ссылке, указанной выше.

Ответы на вопрос(0)

Ваш ответ на вопрос