注册 登录
编程论坛 C++教室

关于引用函数类模板问题 求助大神

知白守黑 发布于 2017-03-14 20:10, 1755 次点击
#include<iostream>
using namespace std;
const int MaxSize=10;  
template <class T>      //定义模板类SeqList
class SeqList
{
public:
   SeqList(){length=0;};     //无参构造函数
   SeqList(int a[],int n);   //有参构造函数
   void Insert(int i, T x);
   T Delete(int i);        //删除线性表的第i个元素
   int Locate(T x );       //按值查找,求线性表中值为x的元素序号
   void PrintList();       //遍历线性表,按序号依次输出各元素
private:
   T data[MaxSize];      //存放数据元素的数组
   int length;            //线性表的长度
};
template <class T>  
SeqList<T>::SeqList(int a[ ], int n)
{
  if (n>MaxSize) throw "参数非法";
  for (i=0; i<n; i++)  
    data[i]=a[i];
  length=n;
}
template <class T>  
void SeqList<T>::Insert(int i, T x)
{
  if (length>=MaxSize) throw "上溢";
    if (i<1 | | i>length+1) throw "位置";
for (j=length; j>=i; j--)
  data[j]=data[j-1];   //注意第j个元素存在数组下标为j-1处
data[i-1]=x;
length++;
}
template <class T>  
T SeqList<T>::Delete(int i)
{
  if (length==0) throw "下溢";
  if (i<1 | | i>length) throw "位置";
  x=data[i-1];
  for (j=i; j<length; j++)
    data[j-1]=data[j];   //注意此处j已经是元素所在的数组下标
  length--;
  return x;
}
template <class T>  
int SeqList<T>::Locate(T x)
{
  for (i=0; i<length; i++)
    if (data[i]==x) return i+1;  //下标为i的元素等于x,返回其序号i+1
  return 0;          //退出循环,说明查找失败
}
int main()
{
 
    SeqList<int>La(int a[],int 10);
    SeqList<int>::Insert(int 1, int 12);
    SeqList<int>::Delete(int 1);
    SeqList::Locate(int 5);
    return 0;

}
这样在主函数引用的话老是报错 修改几次还是发现不了问题 所以来求助大神
2 回复
#2
rjsp2017-03-14 21:27
看你main函数,应该一点儿都没接触过C或C++吧,得从最基础的学起
#3
yangfrancis2017-03-15 15:49
La是个实例。用实例调用成员函数
1