【发布时间】:2021-04-06 09:15:26
【问题描述】:
我正在尝试在 Ada 中基于通用 Node 类构建一个通用链表。但是,尽管使用了 with 子句并相应地添加了前缀,但我无法在链接列表中访问节点的类型和形式参数。
genericnode.ads:
generic
type item_type is private;
package GenericNode is
type Node is limited private;
type NodePtr is access Node;
procedure GetData(n : in Node; e : out item_type);
procedure GetNext(n : in Node; x : out NodePtr);
procedure SetData(n : in out Node; e : in item_type);
procedure SetNext(n : in out Node; x : in NodePtr);
private
type Node is
record
data : item_type;
next : NodePtr;
end record;
end GenericNode;
genericsll.ads:
with GenericNode;
generic
size : Positive;
type node_type is private;
package GenericSLL is
type SLL is limited private;
procedure Append(s : in out SLL; d : in GenericNode.item_type);
procedure PrintTraversal(s : in SLL);
private
type SLL is
record
head : NodePtr := null;
length : Positive := 0;
end record;
end GenericSLL;
编译后,我被告知 Invalid prefix in selected component "GenericNode" 和 "NodePtr" is not visible 关于 genericsll.ads。有什么建议?谢谢!
【问题讨论】:
-
或者,考虑multiway tree。
-
为什么不使用
Ada.Containers.Doubly_Linked_Lists? -
家庭作业可能:) 无论如何学习 Ada 是一个很好的练习
-
不是作业,只是想在下学期之前将我的 Python ADT 知识应用到 Ada(我的一个班级使用它)。
标签: nodes ada singly-linked-list