//新建seqlist.h 定义类模板
#ifndef seqlist_h
#define seqlist_h
const int maxsize=10;
template
class Seqlist
{
public:
Seqlist(){length = 0;}
Seqlist(DataType a[],int n);
//~Seqlist();
int Length(){return length;}
void Printlist();
private:
DataType data[maxsize];
int length;
};
#endif
//新建一个seqlist.cpp 定义成员函数
#include
using namespace std;
#include "seqlist.h"
template
Seqlist::Seqlist(DataType a[],int n)
{
if(n>maxsize)throw"参数非法";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
template
void Seqlist::Printlist()
{
for(i=0;i<n;i++)
cout<<data[i];
}
//新建seqlist_main 定义主函数
#include
using namespace std;
#include "seqlist.h"
void main()
{
int i,z[10];//*p;
cout<<"请输入十个数:";
for(i=0;i cin>>z[i];
//p=z;
Seqlist Seq(z[10],10);
cout<<endl;
}
我个人认为是主函数的数组作为实参传递有问题,但我不知道到底哪里错了,求指教。
Seqlist Seq(z[10],10); 改成 Seqlist Seq(z, 10);,你只要传z给函数就可以了,而不是z[10]
//新建seqlist_main 定义主函数
#include <iostream>
using namespace std;
const int maxsize = 10;
template <class DataType>
class Seqlist
{
public:
Seqlist(){length = 0;}
Seqlist(DataType a[], int n);
~Seqlist(){};
int Length(){return length;}
void Printlist();
private:
DataType data[maxsize];
int length;
};
template <class DataType>
Seqlist<DataType>::Seqlist(DataType a[], int n)
{
if(n > maxsize) throw"参数非法";
for(int i = 0; i < n; i++)
data[i] = a[i];
length = n;
}
template <class DataType>
void Seqlist<DataType>::Printlist()
{
for(int i = 0; i < length; i++)
cout<<data[i];
}
int main()
{
int i, z[10];//*p;
cout<<"请输入十个数:";
for(i = 0;i < 10; i++) cin>>z[i];
//p=z;
Seqlist<int> Seq(z, 10);
Seq.Printlist();
cout<<endl;
}
下面的函数里面用了n,但是没用定义,应该是length
void Seqlist::Printlist()
{
for(i=0;i<n;i++)
cout<<data[i];
}