Operator Overloading << in c++
- by thlgood
I'm a fresh man in C++.
I write this simple program to practice Overlaoding.
This is my code:
#include <iostream>
#include <string>
using namespace std;
class sex_t
{
private:
char __sex__;
public:
sex_t(char sex_v = 'M'):__sex__(sex_v)
{
if (sex_v != 'M' && sex_v != 'F')
{
cerr << "Sex type error!" << sex_v << endl;
__sex__ = 'M';
}
}
const ostream& operator << (const ostream& stream)
{
if (__sex__ == 'M')
cout << "Male";
else
cout << "Female";
return stream;
}
};
int main(int argc, char *argv[])
{
sex_t me('M');
cout << me << endl;
return 0;
}
When I compiler it, It print a lots of error message:
The error message was in a mess.
It's too hard for me to found useful message
sex.cpp: ???‘int main(int, char**)’?:
sex.cpp:32:10: ??: ‘operator<<’?‘std::cout << me’?????
sex.cpp:32:10: ??: ???:
/usr/include/c++/4.6/ostream:110:7: ??: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostre