C++中,如何获取一个变量的类型,然后用这个类型去定义另一个变量?也就是想复制一个同类型的变量。谢了!

比如说:template<classT>voidsort(T*t,intn){//t将为数组类型//...Ttem;tem=t[i]t[i]=t[k];t[k]=tem;... 比如说:
template<class T>
void sort(T *t,int n){//t将为数组类型
//...
T tem;
tem=t[i]
t[i]=t[k];
t[k]=tem;
//...
}
void sort(T&t,int n){//t将为vector<class Record>
//...
Record tem;
tem=t[i]
t[i]=t[k];
t[k]=tem;
//...
}
如何将下面一个合并到上面模板函数,而不是这样去传递一个额外的参数
template<class T,class ar>
void sort(T &t,ar,int n){//char p[];vector<Record> q;...sort(p,p[0],n);sort(q,q[0],n);
//...
ar tem;
tem=t[i];
t[i]=t[k];
t[k]=tem;
//...
}
我想将第二个函数合并到第一个模板函数,第二个模板函数(第三个函数)是我的一种方法,但在调用上增加了一个参数。
展开
 我来答
pps_bd
2011-06-20 · TA获得超过148个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:188万
展开全部
不知道你定义最后一个模板函数是干什么用的,
template<class T,class ar>
void sort(T &t,ar,int n){//char p[];vector<Record> q;...sort(p,p[0],n);sort(q,q[0],n);
//...
ar tem;
tem=t[i];
t[i]=t[k];
t[k]=tem;
//...
}
看你的意思好像是将T类型和ar类型等同了,但是这可能是两个不同类型的数据,貌似不能直接赋值哦
追问
第二个模板函数是前面两个函数的一种合并方式,只是增加了一个参数,至少调用上。
ar类型和T[0]的类型是一样的。只是我想直接获取T成员类型,从而用于定义另一个变量,而不是额外再传递一个参数。
当然如果支持void sort(T &t , int n , ar x=t[0]);或是void sort(T &t , int n , ar x=T[0]);等等这样方法也行啊,只是好像不行。
所以我想"获取一个变量的类型,然后用这个类型去定义另一个变量”。
追答
我理解你的意思应该是你传入的第一个T的实参应该又是一个模板类,诸如vector之类的。如果要实现这种指定,应该定义函数如下:
template
void sort(vector &t,ar,int n);
这样在sort函数里面就可以直接用T定义t的元素了,如T temp=t[0];
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式