私のFortranコードでこの奇妙なruntypeエラーが発生しています。ユーザー定義タイプBの要素としてユーザー定義タイプAへのポインターがあります。タイプBのプロシージャからタイプAに関連付けられたプロシージャを呼び出すと、割り当てられた配列に既に割り当てられたランタイムエラーが発生します。誰かがこのエラーを見たことがありますか?
申し訳ありませんが、コードを表示できません。しかし、これが大まかに起こっていることです。
type B
type(A),pointer :: obj
contains
procedure :: do_something
end type B
type A
integer,allocatable:: long_array(:)
contains
procedure :: do_something_to_long_array
end type A
program main
type(B) :: obj1
type(A) ,target :: obj2
allocate(obj2%long_array(10))
obj1%obj=>obj2
call obj1%obj%do_something_to_long_array()
end program main
do_something_to_long_arrayを呼び出すと、そのエラーが発生します。プロシージャは私のコードに実装されており、オブジェクトで直接呼び出されたときに機能します。long_array内の値にもアクセスできます。しかし、サブルーチンを呼び出すことができません。