|
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是默认传地址的,所以除非你要在子程序中分配指针,否则没有什么必要把虚参定义为指针。
|
|