2013-02-26 2 views
3

아마도 이것은 정말 바보 같은 질문은 하나가 정말 다르게이 작업을 수행해야하지만 : 는 NBananaTypes 및 NAppleTypes이없는 경우에는 뭔가 같은포트란 : 유형에서 알 수없는 크기의 배열

type food 
INTEGER :: NBananasLeft(NBananaTypes) 
INTEGER :: NApplesLeft(NAppleTypes) 
end type food 

이 악화 될 우려가있다 컴파일 시간에 알려지지 않았습니까? 포트란 90 ~ 95에서

답변

3

:

type food 
INTEGER,pointer :: NBananasLeft(:) 
INTEGER,pointer :: NApplesLeft(:) 
end type food 

자신이 allocate(var%NBananasLeft(NBananaTypes)))를 사용하여 배열을 할당해야합니다. 포트란 2003 년

:

type food 
INTEGER,allocatable :: NBananasLeft(:) 
INTEGER,allocatable :: NApplesLeft(:) 
end type food 

당신은 또한 자신이 allocate(var%NBananasLeft(NBananaTypes))) 사용하여 배열을 할당해야합니다,하지만 당신은 메모리 누수의 가능성을 피할 수 있습니다. 매개 변수화 된 데이터 유형에 의해 포트란 2003 년

는 (몇 컴파일러가 지원하는) :

type food(NBananaTypes,NAppleTypes) 
integer,len :: NBananaTypes,NAppleTypes 
INTEGER :: NBananasLeft(NBananaTypes) 
INTEGER :: NApplesLeft(NAppleTypes) 
end type food 
+0

가 답장을 보내 주셔서 감사합니다! – user1638145

+0

makeFood % NapplesLeft 및 makeFood % NBananasLeft를 할당 한 다음 makeFood % NapplesLeft = NApplesLeft라고 말하면서 type (food) makeFood (NBananaTypes, NAppleTpeses, NBananasLeft, NApplesLeft)와 같은 함수를 작성해야한다는 것을 올바르게 이해하고 있습니까? , .. – user1638145

+0

다소 많습니다. Fortran 2003의 자동 재 할당과 함께 내장 생성자를 사용할 수도 있습니다 (제대로 작동해야하지만 그렇지 않을 경우 수정해야 함). –

관련 문제