我非常了解 Ada,但总体而言,我仍然在为面向对象而苦苦挣扎,尤其是在 Ada 中。因此,很可能我只是遗漏了一点。
考虑像树这样的数据结构。存储在树中的对象是抽象类型的。我想完全控制解除分配(使用 Ada.Finalization),因为我正在使用安全指针实现数据结构。这意味着在释放树时,子树在仍然存在引用时不能被释放。
在这种情况下,需要释放数据结构中引用的具体对象。在我看来,这需要一个抽象的 unchecked_deallocation。有没有一种简单的方法可以做到这一点?我还考虑声明一个抽象的Free子例程,该子例程必须由抽象类型的实例实现。不成功。
In 还没有检查标准库以获得合适的数据结构。目前我只是对问题本身感到好奇。