對C++枚舉類型的進一步思考以及簡化

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章