gars heloremplacer la surcharge de l'opérateur en C++?
j'ai appel de classe complexe
je l'ai fait la surcharge d'opérateur comme tel
Complex c = a + b; // where a and b are object of Complex class
qui est essentiellement opérateur + (Complexe & que);
mais je ne sais pas comment dire par exemple
double c = a + 10; //where a is object of Complex class but 10 is integer/double
Je ne définissaient transtypage pour être le double obtenir mon IDE dit qu'il ya trop de opérandes + et il se plaint d'une certaine manière pour ne pas être en mesure de " comprendre » le +
il doit être dans ce format si double c = a + 10;
grâce
message d'erreur est
Error: more than one operator "+" matches these operands:
error C2666: 'Rational::operator +' : 3 overloads have similar conversions
1> could be 'const Complex Complex::operator +(const Complex &)' 1>
or 'double operator +(const Complex &,double)'
le compilateur ne peut pas choisir en fonction de la signature? et oui je ne définissaient en dehors de la classe parce que j'avais celui défini dans la classe grâce
Je pense que cela devrait probablement être étiqueté 'C++'. – Maulrus
Ceci est clairement défini dans * Plus efficace C++ * de Scott Meyer, article 22: Envisager d'utiliser * op = * au lieu de autonome * op *. Le livre * C++ * plus efficace est presque obligatoire pour tout développement C++ sérieux. –