(나는) 많은 다른 랭크와 타입의 데이터 배열을 포함하는 Fortran 파생 타입 T가 있습니다. 이러한 배열은 복잡한 데이터 구조의 내부에 숨겨져 내가 그의 getter 함수를하고 싶은 다음을 수행합니다Fortran 2003에서의 타입 바인딩 함수 오버로딩
"a"는 지정된 형태의 배열 포인터를, 그리고에 Data_ID는 정수a => T%get(data_id)
데이터 구조 내의 데이터를 찾는 데 사용됩니다. 나는 일반적인 이름으로 많은 "get_thistype()"함수를 오버로드함으로써 그렇게한다.
TYPE T
PROCEDURE :: get_real
PROCEDURE :: get_integer
GENERIC :: get => get_real,get_integer
END TYPE
get_thistype() 루틴이 서브 루틴이지만 함수로 쓰여지지 않은 경우에 작동합니다. 내가 훨씬 덜 읽을 찾을
CALL T%get(a,data_id)
이 내 코드의 모습을 의미한다. 동일한 인수 목록이지만 다른 리턴 유형을 갖는 함수를 오버로드하는 방법이 있습니까? 아니면 서브 루틴을 사용해야합니까?
컴파일러가 반환 형식에만 기반한 올바른 함수를 찾아내는 것은 어렵다고 생각합니다. 따라서 불가능할 것입니다. 난 그냥 서브 루틴을 사용합니다. – bdforbes