使用rank 2+数组作为派生类型组件

时间:2017-06-20 09:04:36

标签: arrays fortran

this question开始,我尝试创建一个派生类型Result2D,其中包含排名为2的数组data作为属性,其中包含数据程序init()

type, public :: Result2D
    class(*), allocatable :: data(:,:)

    contains
        procedure, public :: init
end type

contains
    subroutine init(this, data)
        class(Result2D) :: this,
        class(*) :: data(:,:)

        allocate(this%data, source=data)
    end subroutine

但是,使用rank-2数组调用init会导致GFortran中的数组绑定不匹配错误,在allocate语句的行上Array bound mismatch for dimension 1 of array '<<unknown>>' (4/2)。我不明白为什么会发生这种情况,并且它适用于排名1阵列(但不适用于任何排名为2及以上的排名)。

调用init()的代码示例:

type(Result2D) :: r
integer :: i(2,2)

i(1,:) = [1,2]
i(2,:) = [3,4]
call r%init(i)

0 个答案:

没有答案