Typgebundene Prozeduren als Argumente übergeben

Ich versuche, eine typgebundene Prozedur als Argument an eine andere Unterroutine zu übergeben. Ich möchte wissen, ob dies in Fortran möglich ist. Hier ist ein Codeausschnitt, der zeigt, was ich versuche zu tun.

module type_definitions 
 type test_type 
 integer :: i1, i2,i3
 contains 
   procedure :: add_integers_up 
 end type test_type
 contains 
   subroutine add_integers_up(this,i4,ans)
       class(test_type) :: this 
       integer :: i4,ans 
       ans = this%i1+this%i2+this%i3+i4
    end subroutine add_integers_up

subroutine print_result_of_subroutine(i4,random_subroutine) 
  integer :: i4,ans 

  interface 
     subroutine  random_subroutine(i1,i2) 
       integer:: i1,i2
     end subroutine random_subroutine
  end interface

  call random_subroutine(i4,ans) 
  write(*,*) ans 


end subroutine print_result_of_subroutine


end module type_definitions


program main 
   use type_definitions
   implicit none 
   integer :: i1,i2,i3,i4
   integer :: ans 
   type(test_type) :: test_obj

   i1 =1; i2=2; i3=3
   test_obj%i1 = i1 
   test_obj%i2 = i2 
   test_obj%i3 = i3 
   i4 = 4

   call print_result_of_subroutine(i4,test_obj%add_integers_up) 

    end program main

Ist das in Fortran möglich? Ich erhalte eine Compiler-Fehlermeldung, wenn ich versuche, diesen Code mit ifort zu kompilieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage