blob: ea6901616a6a7888c1f0d923af09294e637b8ec1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
|