Как переопределить методы вложенных типов?

У меня есть собственный потомок TObjectList в Delphi 2009, и я хотел бы немного поиграть с его перечислителем и добавить некоторые функции фильтрации в метод MoveNext, чтобы он пропускал определенные объекты. MoveNext вызывается DoMoveNext, который является виртуальным методом, так что это не должно быть трудно переопределить ... за исключением одной вещи. TEnumerator для TObjectList не является его собственным классом; он объявляется как вложенный тип в объявлении TObjectList.

Есть ли простой способ переопределить TEnumerator.DoMoveNext в моем классе-потомке, или мне нужно переопределить весь TEnumerator? Это не очень большой класс, но я бы предпочел свести к минимуму избыточность, если смогу ...

14.12.2008 19:40:24
2 ОТВЕТА

Перечислитель - это его собственный класс. Он просто имеет вложенную область видимости. Чтобы написать потомок для него, вы просто объявляете класс, как обычно, и когда вы указываете предка нового класса, вы даете полное имя типа.

type
  TMasonEnumerator = class(TObjectList.TEnumerator)
  protected
    function DoMoveNext: Boolean; override;
  end;
8
14.12.2008 20:19:17

Отличные темы о счетчиках.

0
14.12.2008 21:01:35
Спасибо :) Но я не затронул эту конкретную тему.
gabr 15.12.2008 07:55:21