开发者

Procedure Pointer, Derived Type

The following doesnt compile in Intel Fortran XE 2011:

TYPE type1
    procedure(interface1),POINTER::p
END TYPE type1

ABSTRACT INTERFACE 
    integer function interface1(a)
        rea开发者_开发百科l,intent(in)::a    
    END function interface1
END INTERFACE

The error:

error #8262: The passed-object dummy argument must be dummy data object with the same declared type as the type being defined.


Add the nopass attribute to the declaration of the procedure pointer component.

procedure(interface1), pointer, nopass :: p

Edit: In response to your comment, if you want to use the pass keyword, the interface would have to be changed as such:

ABSTRACT INTERFACE 
    integer function interface1(passed_object, a)
        import :: type1
        class(type1), intent(...) :: passed_object
        real,         intent(in)  :: a
    END function interface1
END INTERFACE
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜