Skip to content

Instantly share code, notes, and snippets.

@guohai
Forked from anonymous/c++_enum.cc
Created January 7, 2013 15:30
Show Gist options
  • Save guohai/4475848 to your computer and use it in GitHub Desktop.
Save guohai/4475848 to your computer and use it in GitHub Desktop.
#define DECLARE_ENUM(E) struct E { public: E(int value = 0) : _value((__Enum)value) { } E& operator=(int value) { this->_value = (__Enum)value; return *this; } operator int() const { return this->_value; } enum __Enum {
#define END_ENUM() }; private: __Enum _value; };
#include <iostream>
using namespace std;
class B {
B &operator=(const B &);
};
class A {
B member;
};
DECLARE_ENUM(FileSystem)
Read = 0x1,
Write = 0x2
END_ENUM()
DECLARE_ENUM(DataBase)
Read = 0x1,
Write = 0x2
END_ENUM()
int main() {
FileSystem hello = FileSystem::Read;
cout << hello << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment