2012-03-09 3 views
0

컴파일 타임 대신 런타임시 제네릭을 어떻게 인스턴스화 하시겠습니까? 새로운 것을 사용하지 않는 예.런타임시 Ada 제네릭

+0

참고 : 포인터를 메모리에 할당 할 때 제네릭을 인스턴스화하는 것이 새 것과 약간 다릅니다. 왜 이걸 사용하고 싶지 않니? – NWS

+0

질문을 명확히 할 수 있습니까? 현재 (모든) 인스턴스화는 (논리적으로) 런타임에 발생하지만, 일반 템플릿의 코드 확장은 항상 컴파일 타임에 수행됩니다. 정확하게 당신이 성취하고자하는 것은 무엇이며, 왜 당신은'new' 키워드를 피하는 것에 신경 쓰십니까? –

답변

2

new을 사용하지 않으면이 작업을 수행 할 수 없습니다. 모든 선언적 섹션에서 수행 할 수 있지만 generic은 해당 선언적 섹션의 범위 동안 만 유지됩니다. 예를 들어

(컴파일되지 맥도날드와 같은 의사) :

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

아 ok는 hw 태그에 대해서도 생각하지 않습니다. 그래서 내 이해 에서이 힙 올바른 대신 시스템 스택에 스택을 할당 할 것이라고? – sergio