2014-11-12 3 views
0

이 두 함수가 모호성을 어떻게 생성하는지 이해할 수 없습니다. 형식을 정수 또는 실수로 변경하면 컴파일러에서 모호성에 플래그를 지정하지 않습니다.함수 모호성

Function split_to_str_unidim & 
    (       & 
    a, delim, mold,   & 
    pos      & 
)       & 
    Result (bn) 

    Character (len=*), Intent (in) :: a, delim, mold 
    Character (len=*), Intent (in), Optional :: pos 

    Character (len=65), Allocatable :: bn(:) 

End Function 


Function split_to_str  & 
    (       & 
    a, delim, b1, b2,  & 
    b3, b4, b5, b6, b7, b8, & 
    pos      & 
)       & 
    Result (b) 

    Character (len=*), Intent (in) :: a, delim 
    Character (len=*), Intent (in), Optional :: pos 

    Character (len=*), Intent (out) :: b1, b2 
    Character (len=*), Intent (out), Optional :: b3, b4, b5, b6, b7, b8 
    Logical :: b 

End Function 

답변

1

호출 등 a,b,c,d 모든 문자열이 명백하게 당신의 두 가지 기능의 하나를 식별 할 수 있습니다

split_to_str(a,b,c,d) 

있다. 그게 모호합니다.

명확성을 위해 서명 (비 선택적, 의도 (in) 인수 목록)을 고유하게 만들어야합니다. Qs의 최근 흔적에서부터 다른 사람들과 이미 논의했듯이, 나는 이전에 있었던 것에 추가 할 것이 없습니다.

character(len=*)에서 real 또는 integer으로 유형을 변경하면 동일한 문제가 발생하지 않는다는 것에 놀랐습니다.

+0

이 모호성을 해결할 수있는 방법에 대한 제안이 있으십니까? – Zeus

+2

인터페이스에 두 개의 함수를 넣지 마십시오 (완료했다고 가정). 문맥에 따라 적절한 것을 호출하십시오. – bdforbes