24小时热门版块排行榜    

查看: 394  |  回复: 1

chenshuai000

金虫 (正式写手)

[求助] fortran 求助已有1人参与

module shiliang
   implicit none
type vector
     real*8 v(4)
endtype
end module

type(vector) ::W1,W2
我想实现直接W1=W2,即实现两个结构体变量之间的直接赋值操作,请问这个赋值号超载该怎么写?谢谢

发自小木虫Android客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
[code]
module m_test
  implicit none

  private

  public :: t_test

  type t_test
     real(8) :: v(4)
   contains
     procedure :: assign
     generic :: assignment(=) => assign
  end type t_test

contains

  subroutine assign(lhs, rhs)
    implicit none
    class(t_test), intent(inout) :: lhs
    class(t_test), intent(in) :: rhs
    lhs%v = rhs%v
    return
  end subroutine assign
end module m_test

program test
  use m_test
  implicit none
  type(t_test) :: a, b

  a%v = 4
  a%v(2) = 2

  b = a

  write(*, *) b%v(2)
end program test
[\code]
要夢遊,不要催眠。
2楼2016-01-21 19:18:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chenshuai000 的主题更新
信息提示
请填处理意见