4

おそらくこれは本当にばかげた質問であり、実際には別の方法でこれを行う必要がありますが、次のようなものがある可能性はありますか

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

NBananaTypesとNAppleTypesはコンパイル時に不明です。

4

1 に答える 1

4

Fortran 90-95の場合:

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

を使用して自分で配列を割り当てる必要がありますallocate(var%NBananasLeft(NBananaTypes)))

Fortran 2003の場合:

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

また、を使用してアレイを自分で割り当てる必要がありますallocate(var%NBananasLeft(NBananaTypes)))が、メモリリークの可能性を回避できます。

パラメータ化されたデータ型によるFortran2003では(これをサポートしているコンパイラはごくわずかです)。

type food(NBananaTypes,NAppleTypes)
 integer,len :: NBananaTypes,NAppleTypes
 INTEGER :: NBananasLeft(NBananaTypes)
 INTEGER :: NApplesLeft(NAppleTypes)
end type food
于 2013-02-26T13:52:46.293 に答える