在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
的解決方法。如果用抽象類型的組件定義一個類型是誘人的,那麼通常會有哪些替代策略?