1
我試圖定義一個具有私有可分配數組的Fortran派生類型。但是,我希望能夠通過公共指針訪問數組以供其他模塊使用。例如。Fortran派生類型 - 指向私有數組的公共指針
type,public :: test
private
real,allocatable :: a(:,:,:)
contains
real,pointer,dimension(:,:,:),public :: point => a
end type test
我只是在嘗試像上面那樣得到一個編譯器錯誤。
這可能沒有寫一個子程序,爲我做指點?
綜合答案,謝謝。我有一些使用派生類型數組作爲私有的Fortran代碼,並具有與指向專用數組的類型關聯的「點」函數。但是我試圖在程序的其他部分使用OpenACC指令,並且它們不能用指針子程序工作,所以我試圖找到解決辦法。我將嘗試將指針保留爲空,並在數組分配後指向它,再次感謝您的回答! – HM13
您可以將它設置爲指向類型構造函數中的正確位置。 –
爲了清楚起見... Fortran中的結構構造函數看起來像函數(在沒有任何類型參數說明的情況下)。用戶提供的「構造函數」遵循該模式並作爲函數實現(可能隱藏真實的結構構造函數)實際上不能用於指示將一個組件與另一個組件關聯 - 該指針與一些將在不久之後不再存在的事件相關聯該函數返回。您必須使用子例程來構造。請注意指針的關聯狀態隨後可能變得未定義的各種方式。 – IanH