关于C++类模版的问题

设计一个类模板Sort<T>,其中包含T类型的数组data和其中实际元素个数n,另包含有相关成员函数,用于以选择排序方式对data中的数据进行排序和输出data元素。编写... 设计一个类模板Sort<T>,其中包含T类型的数组data和其中实际元素个数n,另包含有相关成员函数,用于以选择排序方式对data中的数据进行排序和输出data元素。编写一个主函数定义整数序列和字符序列,并进行排序。
我的程序是:
template<class T>
class Sort
{private:
T *data;
int n;
public:
Sort(T *d,int m);
void display();
~Sort();
};
#include<iostream>
using namespace std;
#include"sort.h"
template <class T>
Sort<T>::Sort(T *d,int m)
{
n=m;
int i,index,j;
T temp;
data=new T[n];
if (data == NULL)
{
cout << "动态数组创建失败!" << endl;
exit(1);
}
for(i=0;i<n;i++)
data[i]=d[i];
for(i=0;i<n-1;i++){
index=i;
for(j=i+1;j<n;j++)
if(d[index]<d[j])
index=j;
temp=d[index];
d[index]=d[i];
d[i]=temp;
}
}
template<class T>
void Sort<T>::display()
{
int k;
for(k=0;k<n;k++)
cout<<data[k];
cout<<endl;
}

template<class T>
Sort<T>::~Sort()
{
delete data;
}
int main()
{
int n,i,*a;
char *b;
cout<<"please input n:";
cin>>n;
a=new int[n];
cout<<"请输入"<<n<<"个整型数";
for (i=0; i < n; i++)
{
cin>>a[i];
}
Sort <int> s1(a,n);
s1.display();
s1.~Sort();
b=new char[n];
cout<<"请输入"<<n<<"个字母";
for (i=0; i < n; i++)
{
cin>>b[i];
}
Sort <char> s2(b,n);
s2.display();
s2.~Sort;
return 0;
}
错误信息是: 搞不清具体错在哪,希望哪位高手可以解答一下
--------------------Configuration: prog2 - Win32 Debug--------------------
Compiling...
main.cpp
H:\prog2\main.cpp(29) : error C2274: '->' : illegal as right side of '.' operator
H:\prog2\main.cpp(29) : error C2274: '->' : illegal as right side of '.' operator
Error executing cl.exe.

main.obj - 2 error(s), 0 warning(s)
展开
 我来答
猪猪LOVE小小猪
2010-10-20 · TA获得超过131个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:112万
展开全部
#include<iostream>
using namespace std;
template<class T>

class Sort
{private:
T *data;
int n;
public:
Sort(T *d,int m);
void display();
~Sort();
};

template <class T>
Sort<T>::Sort(T *d,int m)
{
n=m;
int i,index,j;
T temp;
data=new T[n];
if (data == NULL)
{
cout << "动态数组创建失败!" << endl;
exit(1);
}
for(i=0;i<n;i++)
data[i]=d[i];
for(i=0;i<n-1;i++){
index=i;
for(j=i+1;j<n;j++)
if(d[index]<d[j])
index=j;
temp=d[index];
d[index]=d[i];
d[i]=temp;
}
}
template<class T>
void Sort<T>::display()
{
int k;
for(k=0;k<n;k++)
cout<<data[k];
cout<<endl;
}

template<class T>
Sort<T>::~Sort()
{
delete data;
}
int main()
{
int n,i,*a;
char *b;
cout<<"please input n:";
cin>>n;
a=new int[n];
cout<<"请输入"<<n<<"个整型数";
for (i=0; i < n; i++)
{
cin>>a[i];
}
Sort <int> s1(a,n);
s1.display();
//s1.~Sort();
b=new char[n];
cout<<"请输入"<<n<<"个字母";
for (i=0; i < n; i++)
{
cin>>b[i];
}
Sort <char> s2(b,n);
s2.display();
//s2.~Sort();
return 0;
}
你为什么要调用析构函数,不明白。
上上西
2010-10-19 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
不要用分别编译,把模板类的函数定义都放到头文件中去,模板类不支持分别编译.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式