2012-03-09 60 views
0

如何在运行时而不是在编译时实例化泛型。没有使用新的例子。Ada泛型在运行时

+0

注意:实例化泛型时新增的内容与新指令分配内存时略有不同。这就是你不想使用它的原因吗? – NWS 2012-03-09 09:24:19

+0

你能澄清这个问题吗?我的(当前)理解是,所有实例化(逻辑上)都是在运行时发生的 - 但通用模板的代码扩展总是在编译时发生。你究竟想要完成什么,为什么你在乎避免使用'new'关键字? – 2012-03-09 11:24:11

回答

2

如果不使用new,则不能这样做。您可以在任何声明部分执行该操作,但是该通用部分仅在该声明部分的范围内存在。

例如(编译没有ADA般的伪代码):

get(length) 
declare 
    package stack is new stack_generic (max_stack_size => length); 
begin 
    stack.push(); 
    ... 
end; 
-- stack package no longer in scope. 

这是否帮助?

+0

是的,这有助于一个吨,我认为这个任务被描述的方式令人困惑。关于不使用新的东西是令人困惑的。 – sergio 2012-03-09 14:54:50

+0

没问题:)另外,如果这是家庭作业,你可以添加一个作业标签到你的问题:) – NWS 2012-03-09 15:18:12

+0

啊,好吧,会做甚至没有考虑过的标签。所以从我的理解,这将分配堆栈在系统堆栈,而不是正确的堆? – sergio 2012-03-09 15:30:28