Mam typ T pochodzący z Fortrana, który zawiera tablice danych (wielu) różnych rang i typów. Te tablice są ukryte wewnątrz skomplikowanej struktury danych i chciałbym mieć funkcję pochłaniacza, który wykonuje następujące czynności:Przeciążenie funkcji związanej z typem w Fortran 2003
a => T%get(data_id)
gdzie „a” jest wskaźnik na tablicy danego typu i data_id jest liczbą całkowitą, która jest używane do znajdowania danych w strukturze danych. Robię to przez przeciążanie wielu funkcji "get_thistype()" pod ogólną nazwą.
TYPE T
PROCEDURE :: get_real
PROCEDURE :: get_integer
GENERIC :: get => get_real,get_integer
END TYPE
Działa to, jeśli procedury get_thistype() są podprocedury, ale nie, jeśli są napisane jako funkcje. Oznacza to, że mój kod wygląda następująco:
CALL T%get(a,data_id)
który uważam za mniej czytelny. Czy istnieje sposób na przeciążenie funkcji, które mają tę samą listę argumentów, ale różne typy zwracane? lub czy muszę użyć do tego podprogramów?
Myślę, że kompilatorowi trudno byłoby znaleźć właściwą funkcję opartą wyłącznie na typach zwracanych, więc prawdopodobnie nie jest to możliwe. Po prostu korzystałbym z podprogramów. – bdforbes