如何在Eiffel中运行游标树?

时间:2019-12-18 18:47:27

标签: eiffel

我需要一个游标树,我在EiffelStudio中找到了CURSOR_TREE和RECURSIVE_CURSOR_TREE类,但是它们被推迟了,我不知道如何实现它们。奇怪吗?

1 个答案:

答案 0 :(得分:0)

CURSOR_TREE的安装中提供了实现.../library/base/elks/structures/cursor_tree的某些类的源代码。不幸的是,这些类(已实现)与void safety不兼容。您可以尝试将以下类复制到项目中并进行编译:

library/base/elks/structures/cursor_tree/compact_cursor_tree.e
library/base/elks/structures/cursor_tree/linked_cursor_tree.e
library/base/elks/structures/cursor_tree/two_way_cursor_tree.e
library/base/elks/structures/cursors/compact_tree_cursor.e
library/base/elks/structures/cursors/linked_cursor_tree_cursor.e
library/base/elks/structures/cursors/two_way_cursor_tree_cursor.e

该过程将涉及几个更改:

  • 您的项目无效安全功能应设置为none(并且应从头开始重新编译项目);

  • 取决于编译器的版本,您可能需要修复库类中的某些有效性错误(例如,从put_right子句中删除redefine);

  • 必须提供功能new_cursor的实现,快速修复可能是虚拟存根:

    new_cursor: ITERATION_CURSOR [G]
        do
            Result := (create {SPECIAL [G]}.make_empty (0)).new_cursor
        end
    

之后,您应该可以使用有效的类COMPACT_CURSOR_TREELINKED_CURSOR_TREETWO_WAY_CURSOR_TREE

如果您打算在无效的项目中使用这些类,我建议与Eiffel Software合作,因为实现和接口需要进行实质性的更改才能使代码无效。