2008-12-14 3 views
2

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

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

ответ

8

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

type 
    TMasonEnumerator = class(TObjectList.TEnumerator) 
    protected 
    function DoMoveNext: Boolean; override; 
    end; 
0

Excelent topics о перечислителях.

+1

Спасибо :) Но я не рассматривал эту конкретную тему. – gabr 2008-12-15 07:55:21

Смежные вопросы