2011-05-04 80 views
1

在可用示例here的示例中,我嘗試定義一個具有過程指針組件f的類型。我也有PASS選項激活,這意味着f的第一個參數是傳遞對象參數。過程指針,通過對象

在節目中,F是一個名爲PROC1子程序,從而改變成分i至999但是,如果我運行該程序,我沒有改變,而是保持相關的123

什麼是我的錯?

感謝

回答

2

我得到一個錯誤,當我嘗試編譯代碼。當我將子程序proc1中參數A的聲明從type(derivedType)更改爲class(derivedType)時,它會消失。

+0

你使用了什麼編譯器? – 2011-05-04 13:34:26

+0

@ user578832:gfortran(4.7)。 – eriktous 2011-05-04 15:24:46

2

我不是專家,但我認爲當你使用PASS屬性時,你必須指定正在傳遞的參數。至少這是我一直在使用它的方式。例如

... pass(self) :: foo

function foo(self, baz) return(bar) 
    type(mytype), intent(in) :: self 
    real, intent(in) :: baz 
    ... 

然後調用這個程序的方法是:instanceOfMyType%foo(baz)

乾杯。