私はオブジェクトがテキストファイルを解析しています。ここに私のメインのプログラムです:Fortranでオブジェクトを正しくファイナライズする方法は?
program main
use Parser_class
implicit none
type(Parser) :: Parser
call Parser%ProcessFile('data.txt')
call Parser%Deallocate
end program main
型定義は、私が最終キーワードについて読み、メインプログラムでは、さらに
module Parser_class
type :: Parser
contains
procedure, public :: ProcessFile
final :: Deallocate
end type Parser
contains
subroutine ProcessFile(self)
...
end subroutine
subroutine Deallocate(self)
type(Parser) :: self
...
end subroutine
end module Parser_class
に型定義を変更
module Parser_class
type :: Parser
contains
procedure, public :: ProcessFile
procedure, public :: Deallocate
end type Parser
contains
subroutine ProcessFile(self)
...
end subroutine
subroutine Deallocate(self)
class(Parser) :: self
...
end subroutine
end module Parser_class
であるIもうcall Parser%Deallocate
はありません。ファイナライザはいつでも呼び出されることはありません。私は何とかこれを得るのは、私が決してParser
オブジェクトを破壊したり上書きしたりしないからです。しかし、私はこれをどうやってやることができますか、または割り当て解除プロセスを処理する適切な方法は何ですか?
「終了プログラム」を追加しました。プログラムは意図どおりに動作します(テキストファイルを読み込むだけです)。私は 'Call Parser%Deallocate'を使う私の方法が全ての配列の割り当てを解除する正しい方法か、ファイナライザを使って行うべきかどうかを知りたいだけです。追加の質問は、ファイナライザが正確に呼び出されるときです。しかし、実際の例を提供することはできません。私はO-O Fortranをかなり新しくしています。 – THo