#include<iostream>
#include<string>
#include"classDefine.h"
using namespace std;
void underflowError(string);
void indexRangeError(string,int,int);
void memoryAllocationError(string);
void RemoveError();
void InsertError();
template <class T> //d_vector.h
class miniVector
{
public:
miniVector(int size = 0);
miniVector(const miniVector<T>& obj);
~miniVector();
miniVector& operator= (const miniVector<T>& rhs);
T& back();
const T& back() const;
T& operator[] (int i);
const T& operator[] (int i) const;
        void push_back(const T& item);
void pop_back();
int size() const;
bool empty() const;
int capacity() const;
void insert(T& n,int place);
void remove(int place);
   private:
int vCapacity;  
int vSize;
T *vArr;
void reserve(int n, bool copy);
};template <typename T>
void miniVector<T>::reserve(int n, bool copy)
{
T *newArr;
int i;
newArr = new T[n];
if (newArr == NULL)
throw memoryAllocationError("miniVector reserve(): memory allocation failure");
if (copy)
for(i = 0; i < vSize; i++)newArr[i] = vArr[i];
if (vArr != NULL) delete [] vArr;
vArr = newArr;
vCapacity = n;
}template <typename T>
miniVector<T>::miniVector(int size):
vSize(0), vCapacity(0), vArr(NULL)
{
int i;
if (size == 0) return;
reserve(size, false);
vSize = size;
for (i=0;i < vSize;i++)
vArr[i] = 0;
}template <typename T>
miniVector<T>::miniVector (const miniVector& obj):
vSize(0), vCapacity(0), vArr(NULL)
{
    int i;
    if (obj.vSize == 0) return;
    reserve(obj.vSize, false);
    vSize = obj.vSize;
   for (i = 0; i < vSize; i++)
     vArr[i] = obj.vArr[i];
}template <typename T>
miniVector<T>::~miniVector()
{
if (vArr != NULL)
delete [] vArr;
}template <typename T>
T& miniVector<T>::operator[] (int i)
{
if (i < 0 || i >= vSize)
throw indexRangeError(
"miniVector: index range error", i, vSize);
return vArr[i];
}template <typename T>
T& miniVector<T>::back()
{
if (vSize == 0)
throw underflowError(
"miniVector back(): vector empty");
return vArr[vSize-1];
}template <typename T>
void miniVector<T>::pop_back()
{
if (vSize == 0)
throw underflowError(
"miniVector pop_back(): vector is empty");
vSize--;
}template <typename T>
void miniVector<T>::push_back(const T& item)
{
  if (vSize == vCapacity)
  {
   if  (vCapacity == 0)reserve(1,false);
else reserve(2 * vCapacity, true);//double size
vArr[vSize] = item;
vSize++;
  }
}template <typename T>
bool miniVector<T>::empty() const
{
return vSize == 0;
}
template <typename T>
void miniVector<T>::insert(T& n,int m)
{
if(n>vSize||n<0)
throw InsertError();
if(vSize == vCapacity)
{
reserve(vcapacity*2+1,true);
}
for(int i= n;i>vSize;i++)
vArr[i+1] = vArr [i];
vArr[n] = m;
vSize++;

}template <typename T>
void miniVector<T>::remove(int n)
{
if(n>=vSize||n<0)
throw RemoveError();
for(int i = n;i<vSize;i++)
vArry[i] =vArry[i+1]; vSize--; if(vSize==0)
{
vCapacity = 0;
delete[] vArr;
}
}int main()
{
miniVector<int> b(9);
b.push_back(2);
return 0;
}
链接爆出的错误:
Cpp1.obj : error LNK2001: unresolved external symbol "void __cdecl memoryAllocationError(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?memoryAllocationError@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$
allocator@D@2@@std@@@Z)
Debug/Cpp1.exe : fatal error LNK1120: 1 unresolved externalsvector