根据标准,这是不允许的。对于Fortran 90/95(第 4.4.1 节)、Fortran 2003(第 4.5.3 节)和Fortran 2008(第 4.5.4.1节),组件属性说明符只能是pointer
和。dimension
allocatable
codimension
contiguous
你可以在这里得到文件。
我遇到了与说明符类似的问题target
,这也是不允许的。
编辑:为什么不尝试private
组件?
module typedef
type :: my_type
integer, private :: a_int = 1
real(kind(1.d0)) :: b
contains
procedure :: a
end type my_type
contains
function a(complex_type)
class(my_type),intent(in) :: complex_type
integer :: a
a = complex_type%a_int
end function
end module
program my_prog
use typedef
implicit none
type (my_type) :: complex_type
complex_type%b = 2.d0 ! This should work
write(*,*) complex_type%a(), complex_type%b
! complex_type%a_int = 3 ! This should fail
end program my_prog