一个最简单的顺序表,只有构造函数和打印,用数组作为参数,但无法运行

//新建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];
}