我得到了一项我无法解决的任务。我不是要求一个完整的解决方案,但如果有人指出我正确的方向,我将感激不尽:
有一个存储日期值的类。它有一个函数displayDate()。
class Date{
int day, month, year;
public:
[...]
virtual void displayDate(ostream &out=cout) const {
out << getDay() << "." << getMonth()
<< "." << getYear() << endl;
}
};
ostream &operator<<(ostream &os, const Date &dob) {
//?
}
运营商&lt;&lt;应该重载并应使用displayDate() - Function而不是自己的输出代码。如何重定向displayDate()的cout-stream,以便我可以在运算符&lt;&lt; -Function中使用它?
谢谢。
答案 0 :(得分:2)
只需在运算符&lt;&lt;。
中传递的对象实例上调用displayDatestd::ostream & operator<<(std::ostream & strm, MyClass const & o)
{
o.someFunc(strm);
return strm;
}
答案 1 :(得分:0)
ostream &operator<<(ostream &os, const Date &dob) {
dob.displayDate(os);
}
为您拼出来。 请注意,displayDate的默认输出流是std :: cout。这在这里宣布:
virtual void displayDate(ostream &out=cout) const { ...
在运营商中使用此功能时&lt;&lt;您使用引用'os'覆盖默认输出流。