問題是在其派生類型中重命名基類型的成員。我認爲可以這樣做,因爲FORTRAN提供了指針和關聯函數。 例如:FORTRAN:重命名派生類型中的成員
type :: base1
integer :: old
endtype base1
type, extends(base1) :: derived1
!here I want old to be renamed as new
!Something like new=> old
!So I can use derived1%new elsewhere
endtype derived1
但問題是BASE1%老不能目標。所以我想我不能使用指針來做到這一點。我不知道該把關聯放在哪裏。有什麼建議麼?謝謝!
感謝您的解釋。我不太瞭解最後一段。我明白擴展類型是基類型的超集。假設,如果以某種方式完成了重命名,則擴展類型不再是基類型的超集。但是對於同一個變量的兩個名字呢?從概念上講,如果擴展類型有一個指向其基類成員的指針,則擴展類型仍然是基類型的超集,對吧?所以擴展類型從它的基類型中繼承了所有成員定義的一個新名稱。你能再解釋一下嗎? – FortCpp 2014-09-02 23:34:10
@FortCpp IanH的意思是用組件type(base1):: new'聲明'type :: derived1'。 'old'將被作爲'derived1%new%old'訪問。 – PetrH 2014-09-03 09:24:12
如果您只是將新名稱與現有名稱並行使用,那麼 - 是的 - 在這種情況下,您正在維護父類型的接口。 – IanH 2014-09-03 09:24:21