过程指针,传递对象

时间:2011-05-04 11:58:12

标签: fortran

在可用的示例here中,我尝试定义一个具有过程指针组件f的类型。我也有PASS选项处于活动状态,这意味着f的第一个参数是传递对象参数。

在程序中,f与一个名为proc1的子程序相关联,它将组件i更改为999.但是,如果我运行程序,则不会更改,而是保持123.

我的错误是什么?

由于

2 个答案:

答案 0 :(得分:2)

当我尝试编译该代码时出现错误。当我将子程序proc1中的参数A的声明从type(derivedType)更改为class(derivedType)时,它就消失了。

答案 1 :(得分:2)

我不是专家,但我认为当您使用PASS属性时,您必须指定要传递的参数。至少这是我一直在使用它的方式。例如

... pass(self) :: foo

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

然后调用此过程的方法是:instanceOfMyType%foo(baz)

干杯。