在fortran 2003中,是否可以定义具有抽象类型组件的派生类型?例如,如下所示,我想定义类型为Sup
的组件o_Abst
为Abst
类型。我已经遇到带有抽象类型组件的Fortran派生类型
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
的解决方法。如果用抽象类型的组件定义一个类型是诱人的,那么通常会有哪些替代策略?