【问题标题】:How do I override methods of nested types?如何覆盖嵌套类型的方法?
【发布时间】:2008-12-14 19:40:24
【问题描述】:

我在 Delphi 2009 中有一个自定义的 TObjectList 后代,我想稍微玩一下它的枚举器并向 MoveNext 方法添加一些过滤功能,以使其跳过某些对象。 MoveNext 由 DoMoveNext 调用,它是一个虚拟方法,所以这应该不难重写......除了一件事。 TObjectList 的 TEnumerator 不是它自己的类;它在 TObjectList 声明中声明为嵌套类型。

有什么简单的方法可以在我的后代类中覆盖 TEnumerator.DoMoveNext,还是我必须重新实现整个 TEnumerator?这不是一个很大的课程,但如果可以的话,我希望尽量减少冗余......

【问题讨论】:

    标签: delphi delphi-2009 nested-class


    【解决方案1】:

    枚举器它自己的类。它只有一个嵌套范围。要为其编写后代,您只需像往常一样声明一个类,并在指定新类的祖先时,给出完全限定的类型名称。

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

    【讨论】:

      【解决方案2】:

      Excelent topics 关于枚举数。

      【讨论】:

      • 谢谢 :) 但我没有讨论那个特定的话题。
      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2021-05-13
      • 1970-01-01
      • 2020-03-14
      • 2020-07-24
      相关资源
      最近更新 更多