J'ai une classe qui a une méthode surchargée. Une certaine sous-classe hérite de ces deux types. Est-il possible de définir une méthode par défaut appel pour éviter d'avoir à appeler static_cast<class>(obj)
Création d'une valeur par défaut pour un appel de fonction surchargé ambigu
struct A {};
struct B {
void foo(const A) {
/*impl*/
}
void foo(const B) {
/*impl*/
}
};
struct C : A, B {
};
int main() {
C c;
B b;
b.foo(c); //ambiguous
}
Est-il possible d'avoir la valeur par défaut du compilateur à un certain appel de méthode?
* Solutions de contournement astucieuses/élégantes acceptées.
Que diriez-vous de déclarer 'void foo (const C)' pour qu'il puisse appeler celui par défaut? – wally
Oh désolé, foo est un appel de méthode d'une superclasse et C est une sous-classe. Je vais éditer ma question pour montrer ceci. –
Essayez peut-être de compiler votre exemple avant de le publier. Il y a beaucoup d'erreurs de syntaxe et la question est maintenant confuse car 'foo' ne peut pas être appelé ainsi si c'est une fonction membre. – wally