请教这样实现向量可以不?有有关问题吗?

请问这样实现向量可以不??有问题吗??
C/C++ code
#include <iostream>
using namespace std;

const int LIST_INIT_SIZE=100;
const int LISTINCREMENT=10;


template <class Object>
struct Node
{
    Object data;
    bool operator == (Node<Object> vs)
    {
        if(this.data==vs.data)
            return true;
        else
            return false;
    }
};

template <class Object>
class List
{
public:
    List();
    List(List<Object> &l);
    ~List();
    bool InitList();
    bool DestroyList();
    bool ClearList();
    bool ListEmpty();
    int  ListLength();
    bool GetElem(int i,Node<Object> *e);
//    bool LocateElem(Node<Object> e,
    bool PriorElem(Node<Object> cur_e,Node<Object> *pre_e);
    bool NextElem(Node<Object> cur_e,Node<Object> *next_e);
    bool ListInsert(int i,Node<Object> e);
    bool ListDelete(int i,Node<Object> *e);
//    bool ListTraverse(vist());
private:
    Node<Object> *pData;
    int iCurLength;
    int iMaxLength;
};

template <class Object>
List<Object>::List()
{
    InitList();
}

template <class Object>
List<Object>::List(List<Object> &l)
{
    iCurLength=l.iCurLength;
    iMaxLength=l.iMaxLength;
    if(pData)
        delete pData;
    pData=new Node<Object>[iMaxLength];
    pData=l.pData;
}

template <class Object>
List<Object>::~List()
{
    ClearList();
    DestroyList();
}

template <class Object>
bool List<Object>::InitList()
{
    pData=new Node<Object>[LIST_INIT_SIZE];
    if(!pData)
        return false;
    iCurLength=0;
    iMaxLength=LIST_INIT_SIZE;
    return true;
}

template <class Object>
bool List<Object>::ClearList()
{
    if(pData)
        delete pData;
    pData=new Node<Object>[LIST_INIT_SIZE];
    if(!pData)
        return false;
    iCurLength=0;
    iMaxLength=LIST_INIT_SIZE;
    return true;
}

template <class Object>
bool List<Object>::DestroyList()
{
    if(pData)
        delete pData;
    iCurLength=0;
    iMaxLength=0;
    return true;
}

template <class Object>
bool List<Object>::GetElem(int i,Node<Object> *e)
{
    if(i<0 || i>iCurLength)
    {
        e=NULL;
        return false;
    }
    *e=pData[i];
    return true;
}

template <class Object>
bool List<Object>::PriorElem(Node<Object> cur_e,Node<Object> *pre_e)
{
    for(int i=0;i<iCurLength;i++)
    {
        if(pData[i]==cur_e && i!=0)
        {
            *pre_e=pData[i-1];
            return true;
        }
    }
    pre_e=NULL;
    return false;
}

template <class Object>
bool List<Object>::NextElem(Node<Object> cur_e,Node<Object> *next_e)
{
    for(int i=0;i<iCurLength;i++)
    {
        if(pData[i]==cur_e && i!=iCurLength-1)
        {
            *next_e=pData[i+1];
            return true;
        }
    }
    next_e=NULL;
    return false;
}

template <class Object>
bool List<Object>::ListInsert(int i,Node<Object> e)
{
    if(iCurLength==iMaxLength)
    {
        pData=new Node<Object>[iMaxLength+LISTINCREMENT];
        if(!pData)
        {
            return false;
        }
        iMaxLength+=LISTINCREMENT;
    }
    iCurLength++;
    for(int index=iCurLength-1;index>i;i--)
    {
        pData[index+1]=pData[index];
    }
    pData[i]=e;
    return true;
}

template <class Object>
bool List<Object>::ListDelete(int i,Node<Object> *e)
{
    if(iCurLength==0)
        return false;
    *e=pData[i];
    for(int index=i;index<iCurLength;i++)
    {
        pData[i]=pData[i+1];
    }
    return true;
}

template <class Object>
bool List<Object>::ListEmpty()
{
    if(iCurLength==0)
        return true;
    return false;
}

template <class Object>
int List<Object>::ListLength()
{
    return iCurLength;
}




------解决方案--------------------