C++ 为什么代码没有';在代码块上不起作用,但在VS上起作用
这一行: “friend ostream&运营商 我的解决办法是:C++ 为什么代码没有';在代码块上不起作用,但在VS上起作用,c++,C++,这一行: “friend ostream&运营商 我的解决办法是: friend ostream& operator<<(ostream& os, const Fraction& obj) { int t = lcf(obj.fenzi, obj.fenmu); os << obj.fenzi/t << "/" << obj.fenmu/t; return os; } friend ostream&
friend ostream& operator<<(ostream& os, const Fraction& obj)
{
int t = lcf(obj.fenzi, obj.fenmu);
os << obj.fenzi/t << "/" << obj.fenmu/t;
return os;
}
friend ostream&operator&&
是必需的,因为a1*a2
返回的r值无法绑定到非常量引用。它可以绑定到const T&
,这将解决问题,但您的运算符需要非常量。请重新考虑在打印内部产生的副作用,这是意外和危险的。请确保代码正确Blocks被设置为c++11或更高版本。同样使用&&
cout,错误消息已发布;您的结论是correct@LightnessRacesinOrbit谢谢,我没有注意到代码段上面的编辑。哦,好吧,我的错:D
cout << ++a1 << endl;//(1)
cout << a2++ << endl;//(2)
cout << a1 * a2 << endl;//(3)
Fraction a;
Fraction b = a;
if(debug_build)
cout <<"LOG:"<<a<<'\n';
assert(a==b);
friend ostream& operator<<(ostream& os, const Fraction& obj)
{
int t = lcf(obj.fenzi, obj.fenmu);
os << obj.fenzi/t << "/" << obj.fenmu/t;
return os;
}