如何覆盖运算符&lt; <! - ? - >

时间:2010-09-14 23:39:58

标签: c++ operators operator-overloading

嘿,我已经覆盖了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;
}

1 个答案:

答案 0 :(得分:8)

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

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

请注意,要使其工作GetDay()GetMonth()GetYear()也必须是const成员函数。