下面的代码是用类模板对数组进行排序,在VC++6.0中运行,无编译错误,只是结果有误,先显示为几百行杂乱无规律的数字,然后出现警告对话框说内存无法读取,程序终止。错在void Sample::disp()函数,请大家帮忙侃侃,不胜感激。#include <iostream.h>
#include <string.h>
template <class T>
class Sample
{
T *p1;
int n;
public:
Sample(T *pp,int m) { p1=pp; n=m; }
void sort();
void disp();
};
template <class T>
void Sample<T>::sort()
{
int i,j,k;
T t,*p2=p1;

    for(i=n-1;i>0;i=k)
for(j=k=0;j<i;j++)
if(p1[j]<p1[j+1])
{ t=p1[j];
  p1[j]=p1[j+1];
  p1[j+1]=t;
  k=j;
}
p1=p2;
}
template <class T>
void Sample<T>::disp()   //我欲通过指针输出排序后的数组,好象没有错啊。
{ for(;p1!=NULL;p1++)
cout<<*p1<<endl; 
}
void main()
{
int a[]={33,49,450,66,2,53,56,74,560};
    Sample<int> s(a,9);
s.sort();
s.disp();
}