У меня есть следующий код: FortranOOP Ошибка Fortran
module class_MAT
implicit none
private
public :: load_coo
type Mat_CSR
real, dimension(:), allocatable :: val, colInd, rowPtr
end type Mat_CSR
contains
subroutine load_coo(filename, this)
implicit none
type(mat_csr) :: this
character(len=50) , intent(in) :: filename
character(len=200) :: line
real, dimension(:), allocatable :: val, colInd, rowPtr
integer :: i
open(unit=7, file = filename)
do i = 1,10
read(7, '(A)') line
write (*,*) line
end do
!allocate(v(n,2))
close(7)
end subroutine load_coo
end module class_MAT
program main
use class_MAT
implicit none
type(Mat_CSR) :: m
end program main
Я в основном адаптирована моя программа из этого примера: http://fortranwiki.org/fortran/show/Object-oriented+programming
Однако я получаю эту ошибку:
gfortran main.f08 -o main -std=f2008 -O2
main.f08:37.15:
type(Mat_CSR) :: m
1
Error: Derived type 'mat_csr' at (1) is being used before it is defined
Я запускаю свою программу с use class_MAT
, поэтому я не понимаю, почему компилятор не знает о Mat_CSR
. Как исправить эту ошибку? Я провел свой пример, и все работает отлично.