Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to override operator <<?

hey, i have overridden operator<< and when i'm trying to use it in a print method (const) i'm getting an error :

the overriden operator :

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

where i'm trying to use it :

void TreatmentHistory::TreatmentHistoryPrint() const
{
    cout << m_treatmentDate << "\n" << endl;
}
like image 590
Roy Gavrielov Avatar asked Feb 27 '23 06:02

Roy Gavrielov


1 Answers

You are using your operator<< in a const member function, thus m_treatmentDate is const (unless declared mutable). You need to fix your operator<< to take const arguments:

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

Note that for this to work GetDay(), GetMonth() and GetYear() have to be const member functions as well.

like image 58
Georg Fritzsche Avatar answered Mar 04 '23 11:03

Georg Fritzsche