Как переопределить методы вложенных типов? - PullRequest
2 голосов
/ 14 декабря 2008

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

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

Ответы [ 2 ]

8 голосов
/ 14 декабря 2008

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

type
  TMasonEnumerator = class(TObjectList.TEnumerator)
  protected
    function DoMoveNext: Boolean; override;
  end;
0 голосов
/ 15 декабря 2008

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

...