类型绑定过程中的代码重用和模糊的通用绑定

时间:2016-07-23 19:06:29

标签: fortran derived-types

我在fortran中使用派生类型来声明位置和 矢量类型。元素存储在数组p。

编码派生类型Vec时遇到的问题。 如何使用类型pos_set重用过程vec。似乎 我必须复制代码。我基本上想要 填充数组p,无论类型是什么 PosVec

此外,当我尝试使用相同的泛型时,我收到错误 两种类型的名称。

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

0 个答案:

没有答案