и т.д., но для «нормального» использования я надеюсь, что это ответит на ваш вопрос.
я есть код, похожий на:
Module C_sys
use class_A
implicit none
Private
Type, public :: C_sys_type
private
logical :: Ao_set = .false.
type(A) :: Ao
Contains
Private
Procedure, public :: get_Ao
Procedure, public :: set_Ao
End Type C_sys_type
interface C_sys_type
Procedure C_sys_type_constructor
end interface C_sys_type
Contains
type(C_sys_type) elemental function C_sys_type_constructor(Ao) result(C_sys)
type(A), intent(in), optional :: Ao
C_sys % Ao = Ao
C_sys % Ao_set = .true.
end function C_sys_type_constructor
type(A) elemental function get_Ao
class(C_sys_type), intent(in) :: this
get_Ao = this % Ao
end function get_Ao
subroutine set_Ao(this, Ao)
class(C_sys_type), intent(inout) :: this
type(Ao), intent(in) :: Ao
this % Ao = Ao
this % Ao_set = .true.
end subroutine set_Ao
End Module C_sys
Я не уверен, где в подпрограмме set_Ao тип (Ao), intent (in) :: Ao следует оставить таким же образом или вместо этого иметь класс (Ao), intent (in) :: Ao. Я знаю, что класс (Ao) делает переменную полиморфной и получает доступ к типу данных A. Но я не знаю, когда нужно использовать один или другой.
Благодарю.