Fortran Coder

查看: 1219|回复: 2
打印 上一主题 下一主题

[子程序] 递归调用出错,error #7121

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2023-6-27 14:51:15 | 显示全部楼层
node%children 的类型虽然为  type(octree_node), dimension(:), pointer :: children 是指向数组的指针。
但 node%children(num_children) 表示 node%children 指针指向目标的第 num_children 个元素。
因为 node%children 指向的目标类型是 type(octree_node), dimension(:),所以它的第 num_children 个元素,类型为 type(octree_node) 而不是 type(octree_node), pointer

有两种修改方法,我推荐第一种
一,第11行,由 type(octree_node), pointer :: node 修改为 type(octree_node) :: node
二,build_octree 函数中增加一个指针变量 type(octree_node), pointer :: pNode,在 call build_octree(pNode 时传入,传入之前先 pNode => node%children(num_children)

由于Fortran是默认传地址的,所以除非你要在子程序中分配指针,否则没有什么必要把虚参定义为指针。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-16 05:11

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表