【问题标题】:How to override operator <<?如何覆盖运算符<<?
【发布时间】:2011-04-12 10:31:38
【问题描述】:

嘿,我已经覆盖了 operator&lt;&lt;,当我尝试在打印方法 (const) 中使用它时,我遇到了一个错误:

被覆盖的运算符:

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

我想在哪里使用它:

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

【问题讨论】:

  • 红线下

标签: c++ operators operator-overloading


【解决方案1】:

您在const 成员函数中使用您的operator&lt;&lt;,因此m_treatmentDateconst(除非声明为mutable)。您需要修复您的 operator&lt;&lt; 以采用 const 参数:

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

请注意,GetDay()GetMonth()GetYear() 也必须是 const 成员函数。

【讨论】: