在閱讀了《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;
這樣就簡單很多了。希望和大家多多交流:)