我很抱歉,但我甚至不确定这会被称为搜索问题和答案。
我有一个类函数
cout << "Fraction x, y(2), z(-5,-6), w(1,-3);" << endl;
Fraction x, y(2), z(-5,-6), w(1,-3);
//Initializing the Fraction class with X at default values
//Y with 2 as Numerator and default value, Z and W with their values.
cout << "z = " << z << ", y = " << y << ", z = " << z
<< ", w = " << w << endl;
我的问题是如何使 “cout&lt;&lt;”z =“&lt;&lt; z&lt;&lt; endl; 打印出分数对于z。我是如何做到这一点的,我可以做 z.output(); ,它会完美地打印出来的功能,但如果我只想把z放入会得到一个错误,因为程序和我都不知道如何使这个工作。我希望这是一个非常简单的修复。我试图分配 z = z.output() 但由于不同的值类型,这不起作用。所以我将它们都更改为Fraction类型,但它仍然无法正常工作。
我必须按原样使用该顶级程序(main),不能修改它。我只能修改自己的功能
谢谢
答案 0 :(得分:3)
你可以这样做(这是一个全局函数;不是任何特定类中的方法):
std::ostream& operator<<(std::ostream& os, const Fraction& f)
{
os << f.output();
return os;
}
我假设output()
具有合适的返回类型。如果没有,那么您可以随时在上述函数中插入替代代码。
这是惯用法:请注意,您返回对传递的流的引用,以启用<<
的链接。