我在FORTRAN中編寫了一個相當小的pde-solving應用程序,我試圖使用OOP。現在,我有幾個模塊,其中一些模塊定義了具有相應內部過程的類型。在Fortran中的不同模塊中定義的連接類型
現在的問題是,如果一個模塊與另一個模塊和後來的模式也與前者的工作類型中定義的類型工作的我該怎麼辦?我舉一個例子。
說,我有兩個模塊,一個限定類型網格,另一種類型NodeVariable。現在我想讓每個NodeVariable與它將要解決的網格相關聯,所以我在該類型的定義中添加了一個type(Mesh) :: mesh
字段。到目前爲止,這是沒有問題,我可以寫use module-mesh
獲得訪問類型網格的定義。但我也希望網格知道在其上定義的變量,因此我將type(NodeVariable), allocatable :: var(:)
聲明爲一個字段,並添加一個過程以將變量添加到網格中。但現在我堅持,因爲我買不起另一使用聲明:它使模塊使用本身,因此一切都崩潰。解?
您可能需要在一個公共模塊中創建所有'TYPE()'定義,並將這些功能移至單獨的輔助模塊。這離開了OOP,但我們仍然在這裏談論Fortran,請記住。如果你試圖強制太多的面向對象範例,你將束縛在結中! – ja72 2012-03-12 06:07:15
在相似的情況下,子模塊可能也很方便,但它們還沒有得到廣泛的支持,所以我不太瞭解它們。 – 2012-03-12 10:17:05
是的,我想我會爲這個定義有一個特殊的模塊! – tiam 2012-03-13 11:27:00