Pourquoi ne voit-on pas une erreur «appel non défini à une fonction surchargée» avec le code ci-dessous? juste parce que int est un type intégré? où dans la norme puis-je trouver la garantie pour la conversion en type intégré, comme dans le code ci-dessous? ... merci!surcharge de fonction et résolution de conversion de type
#include <iostream>
using namespace std;
class B {
public:
operator int(){ return 0; }
};
class A {
public:
A(int i) { };
};
void f (int i) { cout << "overload f(int) was used!";};
void f (A a) { cout << "overload f(A) was used!" ;};
int main() {
B b;
f(b);
}
Avez-vous essayé avec A étant directement constructible à partir de B, en ajoutant 'A :: A (const B &)'? – PiotrNycz
Par * appel non défini à la fonction de surcharge *, voulez-vous dire * ambiguë *? Les erreurs non définies se déclenchent lorsque le compilateur correspond à un symbole mais que l'éditeur de liens ne le trouve pas. –
@David oui, je voulais dire "ambigu". Je vous remercie. – alexandreC