我刚刚在Fortran 2003中开始重载运算符(包括赋值),并且想为我的用户定义类型重载箭头运算符(=>)。 我知道对于大多数运营商,例如(+),
interface operator(+)
! What I want this to mean instead
end interface operator
但是,这不适用于(=>)。我会说要分配的,
interface assignment(=)
! What I want this to mean instead
end interface assignment
对于(=>)仍然无效。
具体来说,我定义了一种类型,其中基础数据是指针。
type my_type
integer, pointer :: data(:)
end type my_type
所以,当我说
type (my_type) :: a
integer, target :: b(4)
! Do stuff to b
a => b
我想要这个意思
a%data => b
谢谢您的任何建议!使用除2003年标准之外的其他标准答案也将有所帮助。
答案 0 :(得分:1)
在Fortran 2018中不可能重载指针分配。
This question询问使用类型绑定过程来解决重载问题,但从更一般的意义上讲,答案仍然是否。
在Fortran 2018之前,指针分配语句的含义
a => b
总是会影响左侧指针a
的指针状态。
尽管Fortran标准具有内部和定义的分配(后者由interface assignment(=)
引入),但指针分配没有这种区别。