I have a question about operators and how to overload them. There is an example of code and I'm overloading operator<< but it doesn't work. There is class that I use:
class CStudent{ //class for students and their attributes int m_id; int m_age; float m_studyAverage; public: CStudent(int initId, int initAge, float initStudyAverage): m_id(initId), m_age(initAge), m_studyAverage(initStudyAverage){} int changeId(int newId){ m_id = newId; return m_id; } int increaseAge(){ m_age++; return m_age; } float changeStudyAverage(float value){ m_studyAverage += value; return m_studyAverage; } void printDetails(){ cout << m_id << endl; cout << m_age << endl; cout << m_studyAverage << endl; } friend ostream operator<< (ostream stream, const CStudent student); }; Overload:
ostream operator<< (ostream stream, const CStudent student){ stream << student.m_id << endl; stream << student.m_age << endl; stream << student.m_studyAverage << endl; return stream; } And there is main method:
int main(){ CStudent peter(1564212,20,1.1); CStudent carl(154624,24,2.6); cout << "Before the change" << endl; peter.printDetails(); cout << carl; peter.increaseAge(); peter.changeStudyAverage(0.3); carl.changeId(221783); carl.changeStudyAverage(-1.1); cout << "After the change" << endl; peter.printDetails(); cout << carl; return 0; } Where is the problem?
friend std::ostream & operator<<(std::ostream & stream, CStudent const & student)