C++ 类模板怎么用呀??
#include<iostream>usingnamespacestd;template<classT,intn>classtmplt{Tarr[n];//n个T类型的数...
#include <iostream>
using namespace std;
template <class T,int n> class tmplt{
T arr[n]; //n个T类型的数据存放于数组arr之中
public:
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<=n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
template <n> tmplt;
cout<<"请分别录入"<<n<<"个数据的值!";
tmplt.dataIn();
tmplt.reverseOut();
return 0;
} 展开
using namespace std;
template <class T,int n> class tmplt{
T arr[n]; //n个T类型的数据存放于数组arr之中
public:
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<=n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
template <n> tmplt;
cout<<"请分别录入"<<n<<"个数据的值!";
tmplt.dataIn();
tmplt.reverseOut();
return 0;
} 展开
3个回答
展开全部
首先,你的模板有两个参数
其次,你的用法明显不对
最后,模板是静态编译的,你想手动输入参数动态创建,还是用动态创建才能解决
正确用法
#include <iostream>
using namespace std;
template <class T> class tmplt{
int n;
T *arr; //n个T类型的数据存放于数组arr之中
public:
tmplt(int n):n(n){
arr = new T[n];
}
~tmplt(){delete[] arr;}
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<=n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
tmplt<double> t(n);
cout<<"请分别录入"<<n<<"个数据的值!";
t.dataIn();
t.reverseOut();
return 0;
}
其次,你的用法明显不对
最后,模板是静态编译的,你想手动输入参数动态创建,还是用动态创建才能解决
正确用法
#include <iostream>
using namespace std;
template <class T> class tmplt{
int n;
T *arr; //n个T类型的数据存放于数组arr之中
public:
tmplt(int n):n(n){
arr = new T[n];
}
~tmplt(){delete[] arr;}
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<=n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
tmplt<double> t(n);
cout<<"请分别录入"<<n<<"个数据的值!";
t.dataIn();
t.reverseOut();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
template <class T>
class tmplt
{
private:
int n;
T arr[]; //n个T类型的数据存放于数组arr之中
public:
tmplt(int n)
{
this->n = n;
}
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n-1;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
tmplt<int> tm(n);//定义对象
cout<<"请分别录入"<<n<<"个数据的值!";
tm.dataIn();//调用函数
tm.reverseOut();
return 0;
}
由于没有给arr分配内存,所以会有内存错误
这样就行了
using namespace std;
template <class T>
class tmplt
{
private:
int n;
T arr[]; //n个T类型的数据存放于数组arr之中
public:
tmplt(int n)
{
this->n = n;
}
void dataIn() //从键盘输入n个T类型数据放入arr数组中
{
int i;
for(i=0;i<n;i++)
cin>>arr[i];
}
void reverseOut() //将arr数组中的数据按输入的相反顺序输入
{
int j;
for(j=n-1;j>=0;j--)
cout<<arr[j]<<" ";
}
};
int main()
{
int n;
cout<<"请输入普通参数n:";
cin>>n;
tmplt<int> tm(n);//定义对象
cout<<"请分别录入"<<n<<"个数据的值!";
tm.dataIn();//调用函数
tm.reverseOut();
return 0;
}
由于没有给arr分配内存,所以会有内存错误
这样就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是把里面的T 指定一个类型哈!!比如把T指定为int~~那么之后全部有关T的都是int类型,就是不需要去每一个都去指定类型,方便!!
追问
这个我也知道的 那个程序应该怎么改呀? 谢谢~
追答
template tmplt;这里的n是写类型不是写数字的!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询