2012-03-09 3 views
0

Как бы вы создавали экземпляр родового во время выполнения, а не во время компиляции. Пример без использования нового.Ada generics во время выполнения

+0

ПРИМЕЧАНИЕ. Новое при создании экземпляра родословной тонко отличается от нового при распределении памяти указателю. Поэтому вы не хотите его использовать? – NWS

+0

Можете ли вы прояснить вопрос? Мое (текущее) понимание состоит в том, что все экземпляры (логически) происходят во время выполнения, но расширение кода шаблона общего назначения всегда выполняется во время компиляции. Что именно вы пытаетесь выполнить, и почему вы заботитесь об избежании «нового» ключевого слова? –

ответ

2

Вы не можете сделать это без использования new. Вы можете сделать это в любом декларативном разделе, однако это общее будет существовать только в течение срока действия этого декларативного раздела.

, например (не компилируется АДА-как псевдокод):

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

+0

Нет проблем :) также, если это домашняя работа, вы можете добавить тег домашней работы на свой вопрос :) – NWS

+0

Ahh ok сделают, даже не подумав о теге hw. Итак, по моему мнению, это будет выделять стек в системном стеке вместо правильной кучи? – sergio

Смежные вопросы