3
我試圖將一個模塊中創建一個抽象類型Fortran 2003延遲綁定過程的實現是否需要相同的參數?
type, abstract :: AbsType
contains
procedure (Compute_AbsSize), deferred :: AbsSize
end type AbsType
abstract interface
function Compute_AbsSize(this)
import AbsType
double precision Compute_AbsSize
class(AbsType)::this
end function Compute_AbsSize
end interface
type, extends(AbsType) :: ConcrType
type(Var), dimension(4) :: Nodes ! coming from a module
contains
procedure :: AbsSize => ConcrTypeSize
end type ConcrType
contains
function ConcrTypeSize(this)
double precision ConcrTypeSize
class (ConcrType):: this !
end function ConcrTypeSize
事實證明,如果我寫
function ConcrTypeSize(TheConcrType)
double precision ConcrTypeSize
class (ConcrType):: TheConcrType !
end function ConcrTypeSize
編譯器(GCC)抱怨說,TheConcrType應有的變量同名延期功能。我找不到這些信息,有人知道我爲什麼必須這樣做,這是正確的嗎?
編輯:我搬到了quetion的最後部分 this new question
對於最後一部分,也許最好把它放在一個單獨的問題。關於主要問題,我的主要觀點是,當我使用擴展類型時,我想使用更接近實際函數的名稱(例如汽車類型而不是抽象類型)在僞參數中明確指出它。無論如何謝謝你的答案和參考! – ray
我編輯的問題,並把最後一部分的問題http://stackoverflow.com/questions/19391094/is-it-possible-to-implement-an-abstract-variable-inside-a-type-in-fortran -2003 – ray
實現綁定的具體過程(因此需要匹配僞參數名稱)可以始終轉發到另一個具有不同僞參數名稱的過程。 – IanH