enum to int?
글쓴이: pok / 작성시간: 수, 2009/09/09 - 11:50오후
flag property 클래스를 하나 만들고 있습니다.
//! Flag property, none size limited version template < typename T_HasFlags, typename T_FlagProperty = typename T_HasFlags::E_FLAG_PROPERTY, int T_Size = typename T_HasFlags::E_FLAG_NUM > class EFlagPropertyEx { public: //! constructor EFlagPropertyEx(){} //! destructor ~EFlagPropertyEx(){} //! sets property value (true or false) void set(T_FlagProperty _prop, bool _flag) { bitset_.set( (size_t)_prop, _flag); } //! tests property value bool test(T_FlagProperty _prop) { return bitset_.test( (size_t)_prop ); } private: std::bitset< T_Size > bitset_; };
다음과 같이 쓰고 싶습니다.
class A { enum E_FLAG_PROPERTY { E_SOSI_LOVE = 0, E_KARA_LOVE, E_FX_LOVE, ... E_FLAG_NUM }; EFlagPropertyEx<A> properties; };
그런데, 이게 vc9에서는 컴파일이 되는데 g++ 3.4.4 버전에는 컴파일이 안되네요. T_HasFlags::E_FLAG_NUM 이것이 int 형이 아니라서 생기는것 같은데, 좋은 방법 없을까요?
Forums:
enum을 int로 명시적 형변환하는게 좋을듯
즐린
컴파일러에 따라 암묵적 형변환이 되는 경우가 있지만
원래는 안되는게 정상입니다.
즐린
댓글 달기