我遇到运算符在c ++中重载的问题。 我有结构代表复数,我正在重载运算符,所以我可以用复数进行计算。 Visual Studio 2012给出了这个错误: 1智能感知:没有运算符“!=”匹配这些操作数 操作数类型是:std :: ostream!= Complex
my!=功能代码
bool operator!=(const Complex& lhs, const Complex& rhs)
{
if( lhs.Real() != rhs.Real() || lhs.Imaginary() != rhs.Imaginary() )
{
return true;
}
else
{
return false;
}
}
<<代码
std::ostream& operator<<(std::ostream& stream, const Complex& number)
{
stream << number.Real() << "+" << number.Imaginary() << "i" << endl;
return stream;
}
主:
int main()
{
Complex c1(1,5),c2(5,6);
cout << c1 != c2;
system("pause");
return 0;
}
如果我这样做
cout << (c1 != c2);
它没有给我任何错误。 有没有人知道如何解决这个问题,而无需添加括号?
答案 0 :(得分:3)
如果您的错误发生在
cout << c1 != c2
这是一个优先问题。它被解析为
(cout << c1) != c2
如果你真的无法忍受额外的parens的样子。你可以做到
cout << operator!=(c1, c2);
但是我希望你不关心它的外观