Полиморфизм Фортрана в указателях

Я пытаюсь использовать указатели для создания ссылок между объектами. Использование Fortran и вот фрагмент кода:

 module base_pars_module
   type,abstract,public :: base_pars
   end type
 end module 
 module test_parameters_module
   use base_pars_module
   type, extends(base_pars) :: test_pars
     contains 
     procedure :: whoami
   end type
   contains
   function whoami(this) result(iostat)
     class( test_pars) :: this
     write(*,*) 'i am a derived type child of base_pars'
   end type
 end module
 module base_mask_module
   use base_pars module
     type, abstract , public :: base_mask
     class(base_pars),pointer :: parameters
   end type
end module
module test_mask_module
  use base_mask_module
  implicit none
  type, extends(base_mask) :: test_mask
  end type
end module
program driver
type(test_pars) , target :: par_Test
type(test_mask) :: mask_test
  iostat= par_test%whoami()
  mask_test%parameters=>par_test
  iostat=mask_test%parameters%whoami()
end program

parameters вbase_mask_module указатель сbase_pars учебный класс. Я хотел бы использовать этот указатель для ссылкиpar_test объект, который являетсяtest_pars тип, который расширяетbase_pars тип. Таким образом, указатель и цель имеют один и тот же класс. Но когда я компилирую это, выдает ошибку:

 driver.f90:17.37:

iostat=mask_test%parameters%whoami()
                                  1
Error: 'whoami' at (1) is not a member of the 'base_pars' structure

Это ошибка или я делаю что-то не так?

Ответы на вопрос(1)

Ваш ответ на вопрос