Я изучаю фортран и хотел бы инкапсулировать массив и подпрограмму в тип.Кажется, проблема в определении типа самообъекта.
Это минимальный тестовый пример, который я придумал:
module testing
implicit none
type test(para)
integer, len :: para
real, dimension(para) :: weights
contains
procedure :: testing => testing_test
end type
contains
subroutine testing_test(self)
class(test(*)) :: self
end subroutine
end module
Компиляция с помощью gfortran вызывает эту ошибку:
module_test.f08:9:23:
procedure :: testing => testing_test
1
Error: Argument ‘self’ of ‘testing_test’ with PASS(self) at (1) must be of the derived-type ‘test’
Это работает, когда длина массива фиксирована (поэтому type%para
не существует)
Это то, что я пытаюсь сделать (введите с массивом переменного размера и привязаннымпроцедура) просто невозможна или я что-то упустил в отношении определения фиктивного аргумента?