Question sur procedure generique
Bonjour à tous,
J'ai écrit un module m_allocation pour surcharger la subroutine allocate (traitement des erreurs directement dans la subroutine, initialisation des valeurs...) qui ressemble à ça:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
module m_allocation
private
public :: m_allocate
interface m_allocate
module procedure m_allocate_k_i
module procedure m_allocate_k_r
...
end interface
contains
logical function m_allocate_k_i(array,size,defaultValue)
integer,dimension(:),allocatable :: array
integer,intent(in) :: size
integer,intent(in) :: defaultValue
...
end function m_allocate_k_i
...
end module m_allocation |
Ce module fonctionne.
Mon problème : j'aurais voulu l'étendre à mes types dérivés, définis dans d'autres modules, mais définir leur fonction d'allocation dans leur module comme ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
module m_bar
type tBar
character(len=8) :: name
real,dimension(2) :: coeff
end type tBar
contains
logical function m_allocate(array,size)
type(tBar),dimension(:),allocatable :: array
integer,intent(in) :: size
...
end function m_allocate |
J'obtiens l'erreur suivante:
error #6405: The same named entity from different modules and/or program units cannot be referenced. [M_ALLOCATE]
Je peux supprimer l'erreur en renommant ma fonction m_allocate_bar, mais je perds alors l'intérêt de procédure générique.
Comment puis je résoudre ce problème?
Merci d'avance et bonne journée