2012-01-15 2 views
3

패키지와 두 개의 하위 패키지 p1.child1p1.child2 패키지가 있습니다. 모든 패키지는 일반적인 패키지입니다. 나는 p1.child2p1.child1의 인스턴스를 만들려고 해요 : Instansiation of "p1" within itself : Ada 95의 일반 하위 패키지 만들기

package body p1inst.child2 is 

    package p1inst is new p1; 
    use p1inst; 

    package p1_child1inst is new p1inst.child1; 
    use p1inst; 

나는 오류를 얻었다. p1.child1에 제네릭 패키지 p1.child2의 인스턴스를 어떻게 만들 수 있습니까?

답변

4

Ada Programming: Advanced generics에서 논의 된 것처럼 일반 단위와이 일반 단위의 인스턴스을 구별하는 데 도움이 될 수 있습니다. 컴파일러에서는 p1의 인스턴스를 p1의 자식으로 만들 수 없다는 것을 알려줍니다. "일반 단위 의 자식은이 무엇이든간에 반드시 있어야합니다."

대신 다른 곳에 p1의 인스턴스를 만들고 해당 인스턴스를 사용하여 p1의 각 자식 인스턴스를 만듭니다.

부록 : 다른 구체적인 예를 들어, procedure JumbleAda.Strings.Bounded의 인스턴스를 생성합니다

function Hash is new Ada.Strings.Bounded.Hash(ASB); 
:

Max_Word : constant Positive := 24; 
package ASB is new Ada.Strings.Bounded.Generic_Bounded_Length(Max_Word); 

이후 절차는 인스턴스가 일반 아동의 경우, Ada.Strings.Bounded.Hash를 만들 것을 사용