문제는 파생 형식에서 기본 형식의 멤버 이름을 바꾸는 것이 문제입니다. 나는 FORTRAN이 포인터와 연관 함수를 제공 한 이후로 할 수 있다고 생각한다. 예를 들어 :FORTRAN : 파생 된 형식의 멤버 이름 바꾸기
type :: base1
integer :: old
endtype base1
type, extends(base1) :: derived1
!here I want old to be renamed as new
!Something like new=> old
!So I can use derived1%new elsewhere
endtype derived1
그러나 문제는 대상이 될 수없는 오래된 base1 %이다. 그래서 포인터를 사용하여 그것을 할 수 없다고 생각합니다. 나는 동료를 둘 곳을 모른다. 어떤 제안? 감사!
설명해 주셔서 감사합니다. 나는 마지막 단락을 잘 이해하지 못한다. 확장 된 형식은 기본 형식의 상위 집합이라는 것을 알고 있습니다. 어쨌든 이름 바꾸기가 끝난 경우 확장 유형은 더 이상 기본 유형의 상위 집합이 아니라고 가정합니다. 그러나 동일한 변수에 대해 두 개의 이름은 어떻게됩니까? 개념적으로, 확장 된 타입이 기본 멤버의 포인터를 가지고 있다면, 확장 된 타입은 여전히 기본 타입의 수퍼 셋입니다. 맞습니까? 따라서 확장 된 유형은 기본 유형에서 정의 된 멤버 중 하나의 새 이름으로 모든 것을 상속합니다. 좀 더 설명해 주시겠습니까? – FortCpp
@FortCpp IanH가 의미하는 것은'type (derived1) :: new' 컴포넌트로'type :: derived1'을 선언하는 것입니다. 'old'는'derived1 % new % old'로 액세스 될 것입니다. – PetrH
기존 이름과 병렬로 새 이름을 사용한 경우 - 예 - 상위 유형의 인터페이스를 유지 관리하고 있습니다. 감사합니다 IanH. – IanH