#include <iostream>
using namespace std;
enum FACE { NORTH, SOUTH, EAST, WEST };
struct Direction {
FACE face;
};
std::ostream& operator<<(std::ostream& os, Direction const& dir)
{
std::string face = "";
switch(dir.face)
{
case(NORTH):
os << "NORTH";
break;
case(SOUTH):
os << "SOUTH";
break;
case(EAST):
os << "EAST";
break;
case(WEST):
os << "WEST";
break;
}
return os << face;
}
int main(){
Direction dir;
dir.face = EAST;
cout << dir; // I want this to print EAST instead of having to do dir.face
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZW51bSBGQUNFIHsgTk9SVEgsIFNPVVRILCBFQVNULCBXRVNUIH07CiAKc3RydWN0IERpcmVjdGlvbiB7CglGQUNFIGZhY2U7Cn07CiAKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIERpcmVjdGlvbiBjb25zdCYgZGlyKQp7CglzdGQ6OnN0cmluZyBmYWNlID0gIiI7Cglzd2l0Y2goZGlyLmZhY2UpCgl7CgljYXNlKE5PUlRIKToKCQlvcyA8PCAiTk9SVEgiOwoJCWJyZWFrOwoJY2FzZShTT1VUSCk6CgkJb3MgPDwgIlNPVVRIIjsKCQlicmVhazsKCWNhc2UoRUFTVCk6CgkJb3MgPDwgIkVBU1QiOwoJCWJyZWFrOwoJY2FzZShXRVNUKToKCQlvcyA8PCAiV0VTVCI7CgkJYnJlYWs7Cgl9CglyZXR1cm4gb3MgPDwgZmFjZTsKfQogCmludCBtYWluKCl7CglEaXJlY3Rpb24gZGlyOwoJZGlyLmZhY2UgPSBFQVNUOwoJY291dCA8PCBkaXI7IC8vIEkgd2FudCB0aGlzIHRvIHByaW50IEVBU1QgaW5zdGVhZCBvZiBoYXZpbmcgdG8gZG8gZGlyLmZhY2UKfQ==