Перегрузка функций с привязкой к типу в Fortran 2003

У меня есть производный от Фортрана тип T, который содержит массивы данных (множества) разных рангов и типов.Эти массивы скрыты внутри сложной структуры данных, и я хотел бы иметь функцию получения, которая делает следующее:

a => T%get(data_id)

где «a» — указатель массива заданного типа, а data_id — целое число, которое используется для поиска данные внутри структуры данных. Я делаю это, перегружая многие функции "get_thistype()" под общим именем.

TYPE T
   PROCEDURE :: get_real
   PROCEDURE :: get_integer
   GENERIC   :: get => get_real,get_integer
END TYPE

Это работает, если подпрограммы get_thistype() являются подпрограммами, но не если они написаны как функции. Это означает, что мой код выглядит так:

CALL T%get(a,data_id)

, который я нахожу гораздо менее читаемым. Есть ли способ перегрузить функции, которые имеют один и тот же список аргументов, но разные типы возвращаемых значений? или для этого нужно использовать подпрограммы?

8
задан calys 12 March 2012 в 17:19
поделиться