3

モジュール内に抽象型を作成しようとしました

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 が遅延関数の変数と同じ名前を持つ必要があると不平を言います。私はこの情報を見つけることができませんでした.なぜ私がこれをしなければならないのか誰か知っていますか?これは正しいですか?

編集:質問の最後の部分を この新しい質問に移動しました

4

1 に答える 1