0

我坚持将过程分配给 Modula-2 中的指针。

PROCEDURE print(node : Node_ptr);
BEGIN
(* some code *)
END print;

TYPE Node_ptr   = POINTER TO Node;
TYPE Visit_ptr  = POINTER TO PROCEDURE (Node_ptr);

TYPE
    Node = RECORD
        parent  : Node_ptr;
        left    : Node_ptr;
        right   : Node_ptr;
        id      : INTEGER;
        visit   : Visit_ptr;
END;

这以某种方式编译。

但是我不知道如何将打印过程分配给我的节点记录的访问成员。我需要这样的东西:

node^.visit^ := print;

(即使是 POINTER TO PROCEDURE 定义也花了我一段时间才弄清楚......)

4

1 回答 1

2

您的分配语法是正确的(在您将节点声明为 Node_ptr 并为其分配空间之后)。

有关更多信息,我建议阅读 Wirth,“Modula-2 中的编程”。你可以找到很好的二手副本美元。它很简洁,但可能包含您需要的所有内容。(其他教程可以在http://freepages.modula2.org/tutor.html找到。)

于 2015-05-29T23:06:08.277 回答