我有一个pureComp_t
派生类型,其组件为Tc
和alpha
。 alpha
是派生类型的alpha_t
。我希望在alpha_t
派生类型中定义的过程value
能够访问组件Tc
以进行一些额外的计算。如何从函数访问父变量
module alpha_m
type :: alpha_t
contains
procedure :: value
end type
type pureComp_t
real(8) :: Tc
type(alpha_t) :: alpha
end type
contains
function value(this,T)
implicit none
class(alpha_t) :: this
real(8) :: T
real(8) :: value
value = T/this%Tc
end function
end module
program regression_alpha
use alpha_m
implicit none
type(pureComp_t) :: pureComp
pureComp%Tc = 620.d0
write(*,*)pureComp%alpha%value(610.d0)
end program
现在,我试图通过编写this%Tc
越来越可变Tc
但函数的参数this
显然是指alpha_t
派生类型,而不是在purecomp_t
派生类型。
我可以通过对代码的最小修改访问变量Tc
进行哪些修改?
所有的人都在哪里学习坏的“真实”(8)'习惯?这里肯定有一些有影响力的来源。 –
这是一个学校的教学习惯。这种书写方式应该被禁止吗? – yolegu
禁止?号皱起了眉头?是。它并不意味着8字节,也不意味着双精度,某些编译器会拒绝编译它(至少默认情况下)。教给新手特别有害。 http://stackoverflow.com/documentation/fortran/939/data-types/4390/precision-of-floating-point-numbers#t=201703011100570236545 –