Это то, что я хочу сделать:Как использовать целое значение наследственного компонента в качестве длины массива в расширении
type dataframe
integer::a,d
integer,dimension(:),allocatable::n
end type dataframe
type,extends(dataframe):: datafilled
double precision,dimension(sum(n),d)::x
end type datafilled
Так dataframe
должен быть в состоянии хранить информацию о размере для своего ребенка datafilled
. gfortran хочет знать тип n
для компиляции, но, на мой взгляд, он уже унаследован. (Доказательство. Если я определю n
в datafilled
, gfortran жалуется на дублирование.) Как я могу заставить его работать?
Примечание: Я объявляю n
подлежащим размещению в соответствии с this question и потому, что gfortran, очевидно, пока не поддерживает атрибут len
Fortran2003.
EDIT: Хорошо, я признаю, что могу сделать это с атрибутом allocatable
и allocate
на каждом этапе инициализации позже.
В начале я был удивлен, что декларация «double precision, dimension (sum (n), d) :: x' работала внутри процедуры, если' n' была переменной 'intent (in)'. Поэтому я был заинтересован, что это может также работать в объявлении типа. До сих пор. –