如何重载运算符<<?

4

嘿,我重载了 operator<<,但是当我试图在一个打印方法 (const) 中使用它时,我遇到了一个错误:

已经重载的运算符:

ostream& operator <<(ostream& os, Date& toPrint)
{
    return os << toPrint.GetDay() << "/" << toPrint.GetMonth() << "/" << toPrint.GetYear();
} 

我正在尝试使用它:

void TreatmentHistory::TreatmentHistoryPrint() const
{
    cout << m_treatmentDate << "\n" << endl;
}

在 m_treatmentDate 前面的 << 下面有红线,当我调试时出现错误:没有匹配这些操作数的运算符 "<<"。 - Roy Gavrielov
1个回答

8

您在一个const成员函数中使用了operator<<,因此m_treatmentDateconst的(除非声明为mutable)。您需要修复您的operator<<以接受const参数:

ostream& operator <<(ostream& os, const Date& toPrint);

请注意,为了使此代码正常工作,GetDay()GetMonth()GetYear()也必须是const成员函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接