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:
Ce module fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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:
J'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Partager