You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
736 B
36 lines
736 B
#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
|