Как переопределить оператор <<? - PullRequest
4 голосов
/ 15 сентября 2010

эй, я переопределил 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 Ответ

8 голосов
/ 15 сентября 2010

Вы используете operator<< в функции-члене const, поэтому m_treatmentDate равно const (если не объявлено mutable). Вам нужно исправить свои operator<<, чтобы принять const аргументы:

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

Обратите внимание, что для этого GetDay(), GetMonth() и GetYear() должны быть также const функциями-членами.

...