0

这就是我想要做的:

  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编译的类型,但在我看来它已经被继承了。(证明:如果我再次定义ndatafilledgfortran 会抱怨重复。)我怎样才能让它工作?

注意:我声明n可以根据这个问题进行分配,因为 gfortran 显然还不支持lenFortran2003 的属性。

编辑:好的,我承认我可以使用allocatable属性和allocate以后的每个初始化步骤来做到这一点。

4

1 回答 1

1

组件数组规范中的内容存在限制,对于不可分配/非指针组件,允许在编译时评估规范(在遇到正在定义的类型的对象的类型声明时) )。具体来说,规范中的界限值不能依赖于变量的值——详见 F2008 中的 C446。

n某些数据框类型对象中的组件是变量;计算sum(n)需要它的价值;你违反了约束。

长度类型参数,即使你的编译器支持它们,也只能是标量。

正如您所得出的结论 - 使用可分配组件,并在某种构造过程中正确分配事物是要走的路。

于 2013-06-26T22:35:25.260 回答