关于模板参数类型判断
时间:2011-12-12
来源:互联网
设计了一个类,
template <class T>
class widget
{
...
private:
T para;
};
根据T的类型不同,有不同的实现。问题是怎么判断出T的类型,比如T是int的话,执行para++,T是double的话,执行double +=1。
可不可以使用traits实现,如果可以,具体怎么做?
template <class T>
class widget
{
...
private:
T para;
};
根据T的类型不同,有不同的实现。问题是怎么判断出T的类型,比如T是int的话,执行para++,T是double的话,执行double +=1。
可不可以使用traits实现,如果可以,具体怎么做?
作者: mm11214014 发布时间: 2011-12-12
采用模板特化template<> class widget<int>{}
template<> class widget<double>{}
模板是通用的,如果你每个类型的操作都不一样,不如不用模板,
模板参数推断是在提供了实例之后发生的,定义的时候你如果要提供类型可采用特化或者偏特化
template<> class widget<double>{}
模板是通用的,如果你每个类型的操作都不一样,不如不用模板,
模板参数推断是在提供了实例之后发生的,定义的时候你如果要提供类型可采用特化或者偏特化
作者: qscool1987 发布时间: 2011-12-12
当然可以了。
C/C++ code
C/C++ code
template<class T = int> class inc { public: static void do_inc(T& v) { v++; } }; template<> class inc<double> { public: static void do_inc(double& v) { v += 1; } }; template <class T> class widget { public: void do_inc() { inc<T>::do_inc(para); } private: T para; }; int _tmain(int argc, _TCHAR* argv[]) { widget<double> w; w.do_inc(); return 0; }
作者: healer_kx 发布时间: 2011-12-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28