#ifndef TQT_ENUM_INHERITANCE_H #define TQT_ENUM_INHERITANCE_H template class TQTInheritEnum { public: TQTInheritEnum() {} TQTInheritEnum(EnumT e) : enum_(e) {} TQTInheritEnum(BaseEnumT e) : baseEnum_(e) {} explicit TQTInheritEnum( int val ) : enum_(static_cast(val)) {} operator EnumT() const { return enum_; } private: // Note - the value is declared as a union mainly for as a debugging aid. If // the union is undesired and you have other methods of debugging, change it // to either of EnumT and do a cast for the constructor that accepts BaseEnumT. union { EnumT enum_; BaseEnumT baseEnum_; }; }; #endif // TQT_ENUM_INHERITANCE_H