【发布时间】:2016-02-10 15:34:25
【问题描述】:
我对 Ada 有点陌生,对这种语言的语法有些困难。
我已经实现了一个堆栈,并且要向它推送一个值,例如,我需要使用一个函数Push(Stack_instance, value)。
我需要很多这样的堆栈实例,而不是固定大小。所以我想使用指向堆栈的指针,每次需要时都会创建一个新的堆栈对象。
现在,我遇到的问题是,在创建指向新堆栈的堆栈指针后,如何将值推送到此堆栈实例?我不能使用Push(Stack, value),因为Push 函数需要Stack 类型,而我有Ptr_Stack。例如,在 C 中,我们有 *ptr 可以通过它访问值,但在 Ada 中是否有类似的东西?
【问题讨论】:
-
关于 Ada 和访问类型的常用建议:隐藏您对包内访问类型的使用。避免让包的用户不得不考虑内存管理。
-
关于 Ada 和访问类型的更多建议:除非必须,否则不要使用它们!您可以将
Stack作为in out参数传递;类似于 C++ 参考。