2013-02-15 214 views
0

我想擴展一個已經擴展類型的Fortran類型。我知道,當我有一個擴展類型,我可以寫擴展擴展類型

type o1 
... 
type, extends(o1) :: o2 
... 

type(Object1) :: o1 
allocate(o2::o1) 

如何做這項工作時,我有一個擴展o2第三種類型?這可能嗎?

回答

4

是的。重述代碼和重命名的清晰度:

type :: t1    ! The top level parent type. 
    integer :: c1   ! A component in the parent type. 
end type t1 

type, extends(t1) :: t2 ! An extension of t1. 
    integer :: c2 
end type t2 

type, extends(t2) :: t3 ! A further extension of t2. 
    integer :: c3 
end type t3 

! Declare an object of declared type t1. 
class(t1), allocatable :: object 

! Allocate that object, giving it a dynamic type of t3. 
allocate(t3 :: object) 

object%c1 = 1  ! c1 is a component of the declared type. 
! Use select type or a type bound procedure to access c2 and c3.  
+0

啊謝謝,應該想到這一點。 – 2013-02-16 14:18:24