c++中如何用模板实现类转化为数字?

chenzhengxi 发布于 2015/07/21 15:23
阅读 190
收藏 0
#define MYEVENTTYPE__A 0x01
#define MYEVENTTYPE__B 0x02 
#define MYEVENTTYPE__C 0x03
#define MYEVENTTYPE(T) MYEVENTTYPE__##T

template <typename T, int N>
class MyEvent : public QEvent
{
public:
MyEvent(T *data_) : QEvent(static_cast<Type>(User + N))
{
data = new T;
memcpy(data, data_, sizeof(T));
}
int k;
T *data;
};
 
有几种类型A,B,C, 分别对应1,2,3
调用方法 new MyEvent<A, MYEVENTTYPE(A)>()
怎样根据类型A导出对应的1,怎样在类中把类型T萃取为N,把类简化为
template <typename T>
class MyEvent : public QEvent
然后调用 new MyEvent<A>()即可
加载中
1
LoveCupid
LoveCupid

template <typename T, int N>
class MyEvent : public QEvent
{
public:
MyEvent(T *data_) : QEvent(static_cast<Type>(User + N))
{
data = new T;
memcpy(data, data_, sizeof(T));
}
int k;
T *data;
};

template<>

class MyEvent<A>:public MyEvent<A,0x01>;


template<>

class MyEvent<B>:public MyEvent<B,0x02>;

template<>

class MyEvent<C>:public MyEvent<C,0x03>;

LoveCupid
LoveCupid
《c++编程新思维》里,有typelist操作,可以优化下代码,看起来没这么丑。
0
c
chenzhengxi
上面定义了几个宏是为了修改添加和调用时方便不出错,如果用偏特化就偏离设计初衷了
返回顶部
顶部