Я объявил рекурсивный тип:
type treeNode
private
class(treeNode), pointer :: left => null()
class(treeNode), pointer :: right => null()
contains
procedure, non_overridable :: IsNull ! Returns true if link is null
end type treeNode
Теперь я хочу реализовать функцию «IsNull».
! ----
pure function IsNull( theNode )
logical(LGT) :: IsNull
class(treeNode), pointer, intent(IN) :: theNode
IsNull = .not. associated( theNode )
end function IsNull
Gfortran жалуется на атрибут указателя: «Ошибка: фиктивный аргумент переданного объекта «isnull» в (1) не должен быть POINTER»
Если я удалю атрибут указателя, заменив его целевым атрибутом (или ничем), я не смогу использовать связанную конструкцию. Также gfortran не позволит мне проверить эквивалентность null().
Вопрос: Как я могу проверить, что фактический аргумент был нулевым?