这就是我想要做的:
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的类型,但在我看来,它已经被继承了。(证明:如果我在datafilled中再次定义n,gfortran会抱怨重复。)我怎么才能让它工作呢?
注意:根据this question,我声明n是可分配的,因为gfortran显然还不支持Fortran2003的len属性。
编辑:好的,我承认我可以在后面的每个初始化步骤中使用allocatable属性和allocate来做这件事。
发布于 2013-06-27 06:35:25
在组件数组规范中有一些约束,即对于不可分配/非指针组件,允许在编译时(在遇到所定义类型的对象的类型声明时)计算规范。具体地说,规范中界限的值不能依赖于变量的值-有关详细信息,请参阅F2008中的C446。
dataframe类型的某个对象中的组件n是一个变量;计算sum(n)需要它的值;您违反了约束。
长度类型参数,即使您的编译器支持它们,也只能是标量。
正如你已经得出的结论-使用一个可分配的组件,并在某种构造过程中正确地分配东西是可行的。
https://stackoverflow.com/questions/17328364
复制相似问题