1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
module class_12_mod
type, abstract :: abstract_type
contains
procedure(integer_method), deferred, nopass :: integer_method
end type abstract_type
abstract interface
function integer_method() result(n)
integer :: n
end function integer_method
end interface
type :: Wrapper
class(abstract_type), allocatable :: obj
contains
procedure :: caller
end type Wrapper
contains
subroutine caller(self)
class(Wrapper), intent(in) :: self
integer :: n
n = self%obj%integer_method()
end subroutine caller
end module
program class_12
use class_12_mod
implicit none
print *, "Ok"
end program
|