views:

95

answers:

1

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;
}
+7  A: 

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.

Georg Fritzsche
Perfect, thanx.
Roy Gavrielov