类模版的疑问
时间:2011-12-12
来源:互联网
class Node{
Elem a;
public:
asd();//elem在int的情况下调用
asd();//Elem在char 的情况下调用
};
如上 加入在创建对象的时候 有可能Elem会取char int
我想在调用函数的时候 能根据类型自动核对asd函数
能实现吗?
作者: xuminghui382 发布时间: 2011-12-12
class Node{
Elem a;
public:
template<typename T >//一个辅助函数模板。
__asd();
template<>
__asd<int>();//elem在int的情况下调用
__asd<char>();//Elem在char 的情况下调用
asd()//这是接口
{
return __asd<Elem>();
}
};
作者: mingliang1212 发布时间: 2011-12-12
===
上面写错了一点,这个上面也要加上template<>
作者: mingliang1212 发布时间: 2011-12-12
class Node{
Elem a;
public:
asd() { __asd(a); };
private:
__asd(int);//elem在int的情况下调用
__asd(char);//Elem在char 的情况下调用
};
这样在调用的时候,就可以通过重载来指定了。
stl中也有这样的用法。
作者: yao_great 发布时间: 2011-12-12
作者: xuminghui382 发布时间: 2011-12-12
找本好点的教材吧,比如《C++ primer》
作者: taodm 发布时间: 2011-12-12
#include<iostream> using namespace std; template <class Elem> class Node{ Elem a; public: template<typename T >//一个辅助函数模板。 asd(); template<typename T > void asd<int>(){//elem在int的情况下调用 cout<<"int"; } template<typename T > void asd<char>(){cout<<"char";}//Elem在char 的情况下调用 void asd()//这是接口 { asd<Elem>(); } }; int main() { Node<int> t1; t1.asd(); Node<char> t2; t2.asd(); }
好多错误啊 指导一下呗 整不明白啊
作者: xuminghui382 发布时间: 2011-12-12
template <class Elem> class Node{ Elem a; public: template<typename T >//一个辅助函数模板。 void/*少了返回类型*/ __asd();//名字要跟接口不同,说了是辅助的。。 template<> void __asd<int>(){//elem在int的情况下调用 cout<<"int"; } template<> void __asd<char>(){cout<<"char";}//Elem在char 的情况下调用 void asd()//这是接口 { __asd<Elem>(); } }; int main() { Node<int> t1; t1.asd(); Node<char> t2; t2.asd(); }
作者: mingliang1212 发布时间: 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