#define ENUM_DECLARE(class_type, enum_type) \
public: \
enum_type value; \
operator enum_type(){return value;} \
class_type(){} \
class_type(int val){ value = (enum_type)val;} \
class_type(const enum_type& n):value(n){}
用法示例:
#include <iostream>
using namespace std;
#define ENUM_DECLARE(class_type, enum_type) \
public: \
enum_type value; \
operator enum_type(){return value;} \
class_type(){} \
class_type(int val){ value = (enum_type)val;} \
class_type(const enum_type& n):value(n){}
struct Day
{
enum _Day
{
One = 1,
Two,
Three
};
ENUM_DECLARE(Day, _Day)
};
struct Night
{
enum _Night
{
One = 1,
Two,
Three,
Four
};
ENUM_DECLARE(Night, _Night)
};
void test(Night n)
{
cout << n << "in test"<<endl;
}
void test_day(Day d)