I've got this class:
我有这门课:
#define TYPE_INVALID 0x00
#define TYPE_BYTE 0x01
#define TYPE_SHORT 0x02
#define TYPE_INT 0x03
#define TYPE_LONG 0x04
#define TYPE_FLOAT 0x05
#define TYPE_DOUBLE 0x06
class BASIC_TYPE
{
private:
int8_t type;
int8_t byteValue;
int16_t shortValue;
int32_t intValue;
int64_t longValue;
float floatValue;
double doubleValue;
public:
BASIC_TYPE();
template<typename T> BASIC_TYPE(int8_t, T);
template<typename T> void set(T);
template<typename T> T get();
};
BASIC_TYPE::BASIC_TYPE()
{
type = TYPE_INVALID;
}
template<typename T> BASIC_TYPE::BASIC_TYPE(int8_t newType, T value)
{
type = newType;
set(value);
}
template<typename T> void BASIC_TYPE::set(T value)
{
switch(type)
{
case TYPE_BYTE : byteValue = value; break;
case TYPE_SHORT : shortValue = value; break;
case TYPE_INT : intValue = value; break;
case TYPE_LONG : longValue = value; break;
case TYPE_FLOAT : floatValue = value; break;
case TYPE_DOUBLE : doubleValue = value; break;
}
}
template<typename T> T BASIC_TYPE::get()
{
switch(type)
{
case TYPE_BYTE : return byteValue;
case TYPE_SHORT : return shortValue;
case TYPE_INT : return intValue;
case TYPE_LONG : return longValue;
case TYPE_FLOAT : return floatValue;
case TYPE_DOUBLE : return doubleValue;
}
}
#define TYPE_IN