在 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
. 如果很想用抽象类型的组件来定义一个类型,那么通常有哪些替代策略?