Ho un tipo T derivato da Fortran che contiene matrici di dati di (molti) diversi gradi e tipi. Questi array sono nascosti all'interno di una struttura di dati complessa e vorrebbe avere una funzione getter che procede come segue:Sovraccarico della funzione legata al tipo in Fortran 2003
a => T%get(data_id)
dove "a" è un puntatore di dato tipo, e data_id è un numero intero che è usato per trovare i dati all'interno della struttura dei dati. Lo faccio sovraccaricando molte funzioni "get_thistype()" sotto un nome generico.
TYPE T
PROCEDURE :: get_real
PROCEDURE :: get_integer
GENERIC :: get => get_real,get_integer
END TYPE
Questo funziona se il get_thistype) routine (sono sottoprogrammi, ma non se sono scritti come funzioni. Questo significa che il mio codice assomiglia a:
CALL T%get(a,data_id)
che trovo molto meno leggibile. C'è un modo per sovraccaricare le funzioni che hanno lo stesso elenco di argomenti ma tipi di ritorno diversi? o devo usare subroutine per quello?
Penso che sarebbe difficile per il compilatore capire la funzione corretta basata esclusivamente sui tipi restituiti, quindi è probabilmente impossibile. Vorrei solo usare le subroutine. – bdforbes