J'ai un problème avec les opérateurs surchargés en C++. J'ai struct qui représente les nombres complexes et je surcharge les opérateurs, donc je peux faire des calculs avec des nombres complexes. Visual Studio 2012 me donne cette erreur: 1 IntelliSense: aucun opérateur "=!" Correspond à ces opérandes types d'opérandes sont: std :: ostream = ComplexeOpérateur de surcharge << et opérateur! =
mon = code fonction
bool operator!=(const Complex& lhs, const Complex& rhs)
{
if(lhs.Real() != rhs.Real() || lhs.Imaginary() != rhs.Imaginary())
{
return true;
}
else
{
return false;
}
}
! < < Code
std::ostream& operator<<(std::ostream& stream, const Complex& number)
{
stream << number.Real() << "+" << number.Imaginary() << "i" << endl;
return stream;
}
principale:
int main()
{
Complex c1(1,5),c2(5,6);
cout << c1 != c2;
system("pause");
return 0;
}
si je fais bien
cout << (c1 != c2);
il me donne aucune erreur. Est-ce que quelqu'un sait comment résoudre ce problème sans avoir besoin d'ajouter des parenthèses?
non, voilà comment l'ordre des opérations travailler en C++. C'est comme demander comment vous pouvez obtenir 4 + 5 * 6 pour faire l'addition avant la multiplication - pas possible. –
Et ce qui est avec cette 'if (condition) return true; sinon retournez faux; '? Pourquoi pas la condition de retour plus simple et moins verbeuse; –
Pourquoi le "if" dans l'implémentation de 'operator! =()'? Renvoie juste 'lhs.Real()! = Rhs.Real() || lhs.Imaginary()! = rhs.Imaginary() ' – Manu343726