在可用的示例here中,我尝试定义一个具有过程指针组件f的类型。我也有PASS选项处于活动状态,这意味着f的第一个参数是传递对象参数。
在程序中,f与一个名为proc1的子程序相关联,它将组件i更改为999.但是,如果我运行程序,则不会更改,而是保持123.
我的错误是什么?
由于
答案 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)
干杯。