【发布时间】:2014-04-03 22:24:46
【问题描述】:
我在 Ada 中有一个任务,它要求我将多个数组传递给与我的主代码不同的包内的一个过程。我四处寻找,但“解决方案”似乎并没有解决我的情况,让我更加困惑。
我已经看到了必须将数组定义为类型 (TYPE IntArray IS ARRAY (Integer RANGE <>) OF Integer) 的示例,但这似乎只在同一个包中从一个过程传递到另一个过程时才有效 - 我如何共享数组 包之间?
--multistack.ads
GENERIC
...
TYPE Item IS PRIVATE;
WITH PROCEDURE Put(Job: IN Item);
PACKAGE MultiStack IS
...
TYPE IntArray IS ARRAY (Integer RANGE <>) OF Integer;
TYPE StackArray IS ARRAY (Integer RANGE <>) OF Item;
Base:IntArray(1..NumberOfStacks);
...
END MultiStack;
和
--stackmove.ads
WITH MultiStack;
GENERIC
TYPE Item IS PRIVATE;
PACKAGE StackMove IS
PROCEDURE ReallocateArray(Base:IN OUT MultiStack.IntArray);
END StackMove;
我最终得到错误stackmove.ads:13:160: invalid prefix in selected component "MultiStack"
【问题讨论】:
-
为什么不起作用?如果您遇到错误,请发布一些代码,让我们知道您遇到了什么错误。
-
我不知道你在上什么样的大学课程,但是如果你的课程需要你将来在 Ada 工作,我强烈建议你阅读 Barnes 的书。
-
您在问题最后一段中显示的错误消息是指第 13 行第 160 列,但您显示的代码只有 7 行,而且少于 160 列。