Car.h:
Code:
ostream& operator << (ostream& out, Car::TankStatus eStatus);
istream& operator >> (istream& in, Car::TankStatus& eStatus);
Car.cpp:
Code:
ostream& operator << (ostream& out, Car::TankStatus eStatus)
{
out << eStatus;
return out;
}
istream& operator >> (istream& in, Car::TankStatus& eStatus)
{
in >> reinterpret_cast<int&>(eStatus);
return in;
}
Note that it simply should not be inside the Car class. The Car.h file might look like:
Code:
class Car
{
//...
};
ostream& operator << (ostream& out, Car::TankStatus eStatus);
istream& operator >> (istream& in, Car::TankStatus& eStatus);
In this case, the operators are not part of the class.
However, if you do:
Code:
class Car
{
ostream& operator << (ostream& out, Car::TankStatus eStatus);
istream& operator >> (istream& in, Car::TankStatus& eStatus);
};
They become part of the class, and that's not what you want.