在fortran中将数组作为无限多态对象传递

时间:2017-02-08 01:49:53

标签: arrays fortran polymorphism

我的代码的目的是获取任何类型的数组,并将类型特定的东西做成不同的类型。我正在使用pgfortran(Fortran 03标准)来编译它,它编译得很好。

然而,我的子程序中的select类型构造" test_class"不会工作。每当我的数组实际上是整数时,它就转到class default(这意味着它既不是整数也不是实数)。

我的代码有什么问题?我需要使用指针吗?

subroutine test_class(array)
  implicit none
  class(*)::array(:)
  select type (array)
  type is (integer)
    print*, 'type is integer'
  type is (real)
    print*, 'type is real'
  class default
    print*, 'no type found'
  end select
end subroutine

program testpoly
  implicit None
  integer::test(3,3),i,j
  do i = 1, 3
    do j = 1, 3
      test(i,j) = i+j
    enddo
  enddo
  call test_class(test)

end program

0 个答案:

没有答案