Enum
От: User99  
Дата: 14.10.02 13:44
Оценка:

template< class T>
class CEnum
{
public:
    CEnum(int minV=0, const int maxV=255, const int uV=255):  m_maxVal(maxV), m_minVal(minV), m_unknownVal(uV) {}
    operator T() const        { return m_val; }
    

    operator int() const    { return m_val; }
    
    const CEnum& operator=(const int val) 
    {  
        m_val=IsUnknown(val)? (T)m_unknownVal:(T)val; 
        return *this; 
    }
    
    const CEnum& operator=(const CEnum& val)     { m_val=val.m_val; return *this; }
    bool operator==(const T& val)const  { return m_val==val.m_val; }
    bool operator==(const int val)const { return m_val==val;    }
    bool operator!=(const T& val)const  { return m_val!=val.m_val; }
    bool operator!=(const int val)const { return m_val!=val;    }
private:
    bool    IsUnknown(const int val) { return (val<m_minVal || val>m_maxVal || val==m_unknownVal); }
    const int        m_maxVal;
    const int        m_minVal;
    const int        m_unknownVal;
    T                m_val;
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.