Erreur d'accès ambigu à une fonction membre après dérivation multiple - C++ - Programmation
Marsh Posté le 29-03-2007 à 23:53:12
Citation : Serait-ce possible que ce soit un probleme de scope puisque l'utilisation des using permet de faire sauter cette ambiguité. |
si au réultat du "name lookup", il y a des noms identiques ne provenant pas de la même base, il y a alors ambiguité et le programme n'est pas valide.
Citation : S'agit-il d'un comportement que l'on retrouve sur d'autre compilateurs ou est-ce une particularité de VC++? |
VC++ applique ce que le standard dicte, et les autres compilateurs doivent faire de même.
Marsh Posté le 30-03-2007 à 09:52:06
++fab a écrit :
|
Sauf que la signature n'est pas la même:
dans un cas on a une fonction de type x(int) et dans l'autre c'est du x(char).
Donc pour moi l'ambiguité devrait être automatiquement levée - c'est la cas lors de la surcharge d'une fonction il me semble.
Marsh Posté le 30-03-2007 à 10:55:05
papangue a écrit : Sauf que la signature n'est pas la même: |
Cela n'a pas d'importance, seul le nom compte.
Citation : Donc pour moi l'ambiguité devrait être automatiquement levée |
Non. Imagine une classe héritant de A et de B, A provenant du vendeur EntrepriseA et B provenant de EntrepriseB.
EntrepriseA et EntrepriseB ne se connaisse pas. A chaque mise à jour des bibliothèques, tu peux imaginer les problèmes qui se poserait si C++ ne procédait pas ainsi ...
Marsh Posté le 29-03-2007 à 22:51:41
Salut à tous.
Soit le code suivant:
La question est simple: VC++ génère une erreur à la compilation car il ne semble pas etre capable de déterminer quelle fonction x il doit exécuter; mon soucis est que la signature des fonctions n'est pas la même puisque dans un casla fonction x parend comme argument un char et dans l'autre c'est un int. Si c'était simplement de la surcharge de fonction ça marcherait sans aucun problème il me semble.
Serait-ce possible que ce soit un probleme de scope puisque l'utilisation des using permet de faire sauter cette ambiguité.
Quelqu'un peut-il m'en dire un peu plus sur le sujet? Sa'git-il d'un comportement que l'on retrouve sur d'autre compilateurs ou est-ce une particularité de VC++?
Merci par avance pour vos réflexions sur le sujet.
Message édité par papangue le 29-03-2007 à 22:52:23