diff options
Diffstat (limited to 'tqtinterface/qt4/include/tqtenuminheritance.h')
-rw-r--r-- | tqtinterface/qt4/include/tqtenuminheritance.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tqtinterface/qt4/include/tqtenuminheritance.h b/tqtinterface/qt4/include/tqtenuminheritance.h new file mode 100644 index 0000000..ea69016 --- /dev/null +++ b/tqtinterface/qt4/include/tqtenuminheritance.h @@ -0,0 +1,36 @@ +#ifndef TQT_ENUM_INHERITANCE_H +#define TQT_ENUM_INHERITANCE_H + +template <typename EnumT, typename BaseEnumT> +class TQTInheritEnum +{ +public: + TQTInheritEnum() {} + TQTInheritEnum(EnumT e) + : enum_(e) + {} + + TQTInheritEnum(BaseEnumT e) + : baseEnum_(e) + {} + + explicit TQTInheritEnum( int val ) + : enum_(static_cast<EnumT>(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
\ No newline at end of file |