Dire que j'ai trois classes:Comment C++ choisit-il quelle fonction surchargée appeler?
class X{};
class Y{};
class Both : public X, public Y {};
Je veux dire que j'ai deux classes, puis une troisième classe qui étend à la fois (héritage multiple).
dire Maintenant, j'ai une fonction définie dans une autre classe:
void doIt(X *arg) { }
void doIt(Y *arg) { }
et j'appelle cette fonction avec une instance à la fois:
doIt(new Both());
Cela provoque une erreur de compilation, indiquant que l'appel de la fonction est ambigu.
Quels sont les cas, en dehors de celui-ci, où le compilateur C++ décide que l'appel est ambigu et renvoie une erreur, le cas échéant? Comment le compilateur détermine-t-il ces cas?
Il semble que, sur cette question, vous auriez pu l'essayer et l'avoir découvert. :) – dkretz
oui mais je n'ai pas eu accès à un compilateur C++ – Claudiu
http://codepad.org/ pour gcc et http://www.comeaucomputing.com/tryitout/ pour comeau sont deux bons sites pour des tests rapides. –