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
14 years ago
|
#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
|