2

Delphi 2009 でカスタム TObjectList の子孫を取得しました。その列挙子を少し操作して、MoveNext メソッドにフィルタリング機能を追加して、特定のオブジェクトをスキップさせたいと考えています。MoveNext は、仮想メソッドである DoMoveNext によって呼び出されるため、これをオーバーライドすることは難しくありません... 1 つのことを除いて。TObjectList の TEnumerator は独自のクラスではありません。TObjectList 宣言内でネストされた型として宣言されています。

子孫クラスで TEnumerator.DoMoveNext をオーバーライドする簡単な方法はありますか、または TEnumerator 全体を再実装する必要がありますか? それほど大きなクラスではありませんが、できれば冗長性を最小限に抑えたいと思います...

4

2 に答える 2

8

列挙子独自のクラスです。ネストされたスコープがあるだけです。その子孫を記述するには、通常どおりクラスを宣言するだけです。新しいクラスの祖先を指定するときに、完全修飾型名を指定します。

type
  TMasonEnumerator = class(TObjectList.TEnumerator)
  protected
    function DoMoveNext: Boolean; override;
  end;
于 2008-12-14T20:19:17.527 に答える
0

列挙子に関する優れたトピック。

于 2008-12-14T21:01:35.803 に答える