Bonjour,
J'ai une erreur etrange a la compilation du programme suivant :
ambiguite.ads :
ambiguite.adb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 package ambiguite is type A is null record; type B is private; function B_Vers_A(Un_B: in B) return A; --seconde 'interpretation possible' procedure P(Un_A: in A); private --premiere 'interpretation possible' type B is new A; end ambiguite;
L'erreur est :
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 package body ambiguite is function B_Vers_A(Un_B: in B) return A is begin return A(Un_B); end B_Vers_A; procedure P(Un_A: in A) is begin null; end P; Un_B : B; begin --L'endroit ou l'erreur se produit P(B_vers_A(Un_B)); end ambiguite;
(j'utilise gnat 4.1 sous linux; commande : gnatmake ambiguite -o test)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ambiguite.adb:14:09: ambiguous expression (cannot resolve "P") ambiguite.adb:14:09: possible interpretation at ambiguite.ads:9 ambiguite.adb:14:09: possible interpretation at ambiguite.ads:6
L'erreur ne se produit pas dans les cas suivant :
-si l'appel qui pose probleme est fait hors du fichier ambiguite.adb.
-si le type B n'est pas private
-si le type B ne 'derive' pas de A (en adaptant le code de B_vers_A evidement)
J'ai demande a mon prof qui n'a pas su m'indiquer ce qui n'allait pas avec mon code.
Quelqu'un saurait me dire d'ou vient le probleme s'il vous plait ?
Cordialement.
Partager