我在fortran中使用派生类型来声明位置和 矢量类型。元素存储在数组p。
中编码派生类型Vec
时遇到的问题。
如何使用类型pos_set
重用过程vec
。似乎
我必须复制代码。我基本上想要
填充数组p
,无论类型是什么
Pos
或Vec
。
此外,当我尝试使用相同的泛型时,我收到错误 两种类型的名称。
Generic :: set => pos_set
Generic :: set => vec_set
以下是差异
Type Pos
Integer, Allocatable :: p(:)
Contains
Procedure :: pos_set
Generic :: set => pos_set
End Type Pos
Type, Extends (Pos) :: Vec
Contains
Procedure :: vec_set
Generic :: set => vec_set
End Type Vec
Subroutine pos_set (t, u, v, w)
Class (Pos), Intent (InOut) :: t
Integer, Intent (In) :: u
Integer, Intent (In), Optional :: v, w
Integer :: ct
Call scan (ct, u, v, w)
Call newp (t, ct)
t% p(1) = u
If (Present (v)) t% p(2) = v
If (Present (w)) t% p(3) = w
End Subroutine pos_set