にオーバーロードするとき、私はベクトルの派生型ランクの不一致FORTRAN
Type :: Vector
Real (Real32), Allocatable :: r32(:)
Real (Real64), Allocatable :: r64(:)
Real (Real128), Allocatable :: r128(:)
Contains
Procedure :: set => vector_set, &
vector_tutvc, &
vector_vctvc
私はしかし、(B)を使用している場合、正しく すべてが働いてもらう(A)のように、私はサブルーチンを呼び出すと、私は取得していますがあります
エラー: 'U'(1)(スカラーとランク-1)ここで
(a) Call vcr % vector_tutvc (r)
(b) Call vcr % set (r)
の引数でランクの不一致です詳細
ここSubroutine vector_set (t, u, v, w)
Class (Vector), Intent(InOut) :: t
Class (*), Intent (In) :: u
Class (*), Intent (In), Optional :: v, w
Subroutine vector_tutvc (u, tu)
Class (Vector), Intent(InOut) :: u
Class (*), Intent (In) :: tu(:)
テストプログラム
Type (Vector) :: vcr
Real (Real32), Allocatable :: r(:)
r = [ &
1.0000000, 0.9999965, 0.9999931, 0.9999896, 0.9999862, &
0.9999829, 0.9999796, 0.9999763, 0.9999731, 0.9999699, &
0.9999668, 0.9999637, 0.9999607 &
]
Call vcr % set (r)