在 fortran 2003 中,是否可以定义具有抽象类型组件的派生类型?例如,如下所示,我想定义一个Sup具有类型组件o_Abst的Abst类型。
TYPE, ABSTRACT :: Abst
CONTAINS
PROCEDURE(some_proc), deferred, pass :: some_proc
..
END TYPE Abst
TYPE :: Sup
PRIVATE
CLASS(Abst) :: o_Abst
..
CONTAINS
PROCEDURE :: another_proc
END TYPE Sup
我已经遇到的一个问题是为Sup类型对象编写构造函数。我无法o_Abst通过内部赋值为组件赋值=(英特尔编译器说,“在内部赋值语句中,变量不应是多态的。”)。或者我不能为Abst类型对象编写构造函数,因为据我所知,如果传递的对象虚拟参数以外的参数是抽象类型,则无法正确覆盖延迟的类型绑定过程。
我也很高兴听到有关避免使用类似Sup. 如果很想用抽象类型的组件来定义一个类型,那么通常有哪些替代策略?