在阅读了《C++ 枚举类型的思考》这篇文章后,我思索了一下,看能不能用更加简单的方法实现文中对枚举类型的包装。
在经过一番试验之后,发现了更加简单的实现,希望与大家共享。以下为源码:
class ColorSpace
{
public:
enum
{
COLOR_RED = 1,
COLOR_BLUE,
COLOR_GREEN
};
virtual ~ColorSpace()=0;
};
使用方法如下:
cout << "color value is " <<ColorSpace::COLOR_BLUE<<endl;
因为是纯虚析构函数声明,所以不可能实例化。以上定义个人觉得比《C++ 枚举类型的思考》更为简单明了,只需用宏稍微包装一下。
#define enum_start(T) \
class T \
{ \
private: virtual ~T() = 0; \
public: \
enum \
#define enum_end \
;}
使用方法:
enum_start(ColorSpace)
{
COLOR_RED = 1,
COLOR_BLUE,
COLOR_GREEN
}
enum_end;
这样就简单很多了。希望和大家多多交流:)