首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在扩展中使用继承组件的整数值作为数组长度

如何在扩展中使用继承组件的整数值作为数组长度
EN

Stack Overflow用户
提问于 2013-06-27 03:02:11
回答 1查看 51关注 0票数 0

这就是我想要做的:

代码语言:javascript
复制
  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来做这件事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 06:35:25

在组件数组规范中有一些约束,即对于不可分配/非指针组件,允许在编译时(在遇到所定义类型的对象的类型声明时)计算规范。具体地说,规范中界限的值不能依赖于变量的值-有关详细信息,请参阅F2008中的C446。

dataframe类型的某个对象中的组件n是一个变量;计算sum(n)需要它的值;您违反了约束。

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

正如你已经得出的结论-使用一个可分配的组件,并在某种构造过程中正确地分配东西是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17328364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档