我在我的 fortran 代码中遇到了这个奇怪的运行类型错误。我有一个指向用户定义类型 A 的指针作为用户定义类型 B 的元素。当我从类型 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 中的值。但我无法调用子程序。