在fortran中,我可以在子程序中使用Class(*)并使用
Select Type (ir)
Type Is (Integer (Int8))
Type Is (Integer (Int16))
End Select
有没有办法传递数值而不是使用Class (*)
,例如使用Class (Integer)
或类似的东西。
答案 0 :(得分:0)
内在类型不是扩展类型,它们没有共同的祖先,没有类似的存在。您可以使用无限多态(class(*)
),或者必须指明确切的类型和种类(real(dp)
)。您也可以在Fortran 2008中编写type(real)
,但这不会改变任何内容,它只是一种不同的语法。
查看一些常用的通用编程技术,例如How to make some generic programming in fortran 90/95 working with intrinsic types,STL analogue in Fortran等。您通常会为每种类型制作单独的过程,并从包含文件中粘贴代码主体。