Скажем, у вас есть две подпрограммы, которые имеют разные интерфейсы, и у вас есть два типа, каждый из которых соответствует одной из процедур.
type, abstract :: base
contains
procedure :: pointer_to_routine
end type base
type, extends(base) :: first_case
contains
procedure :: pointer_to_routine => first_case_routine
end type first_case
type, extends(base) :: second_case
contains
procedure :: pointer_to_routine => first_sec_routine
end type second_case
Так что это недопустимый код на Фортране, но это своего рода идеяЯ хочу делать.Если бы подпрограммы имели схожие интерфейсы, я мог бы определить атрибут abstract interface
и deferred
в объявленном базовом типе.Но так как мои две подпрограммы имеют разные интерфейсы, я не уверен, как это может сработать.
По сути, для одной подпрограммы требуется больше входных данных, чем для другой, поэтому одним из решений было бы добавить оставшиеся входные данные как просто фиктивные входные данные,хотя, это может вызвать некоторую путаницу, и мне интересно, есть ли более удобное решение.