私はいくつかのfortran 2003をいじっていますが、実際に物事を行う方法を理解できないように見えるので、ここで簡単にヘルプを使用できると思います. 実際には、メンバーの 1 つとして実際の関数へのポインターを持つ新しいデータ型をモジュール内で宣言する Fortran コードを作成する必要があります。何かのようなもの
module new_mod
type my_type
real*8 :: a, b
(here something that declares a real*8 function), pointer :: ptr
end type my_type
end module_new
module funcs
real*8 function function1(x)
real*8 :: x
function1 = x*x
end function function1
real*8 function function2(x)
real*8 :: x
function2 = x*x
end function function2
end module funcs
次に、メインプログラムで次のようなものが必要です
program my_prog
use module_new
use module_funcs
implicit none
real*8 :: y, z
type(my_type) :: atom
...
atom%ptr => function1
y = atom%ptr(x)
...
atom%ptr => function2
z = atom%ptr(x)
end program my_prog
その間
したがって、主なアイデアは、module_new に実際の関数へのポインターを持つ型が含まれているということです。新しいタイプ I のオブジェクト内のこのポインターは、メイン プログラム内のさまざまな関数を指すことができなければなりません。抽象インターフェースなどで同様のことができるのを見てきましたが、正直なところ、私はここで混乱しています。誰かが助けることができれば、私はそれを感謝します. 乾杯...