谁帮我看瞎这个模板哪里错了!看了半天都没发现错误!
类文件:程序代码:
#pragma once #include "head.h" template <typename T> class Vector { public: Vector(); ~Vector(); T & operator[](int nNumber);//重载[] void AllocatedMemory();//分配内存 bool judgeMemory();//判断内存是否已满 void push_back(T nX);//尾部增加 void pop_back();//尾部弹出 T &at(int pos);//返回pos位置元素的引用 T &front();//返回首元素的引用 T &back();// 返回尾元素的引用 T *begin(); T *end(); T *rbegin(); T *rend(); int size();//返回个数 enum {MEMORY_SIZE_TWO_TIMES}; private: T *m_nX; int m_nMemorySzie; int m_nCount; }; [code] #include "Vector.h" template <typename T> Vector<T>::Vector() :m_nX(nullptr), m_nMemorySzie(1024), m_nCount(0) { } template <typename T> Vector<T>::~Vector() { delete m_nX; } template <typename T> void Vector<T>::AllocatedMemory()//分配内存 { if (m_nX == nullptr) { m_nX = new T[sizeof(T)*m_nMemorySzie];//分配内存 } else if(judgeMemory()) { T *NewX = new T[sizeof(T)*m_nMemorySzie*MEMORY_SIZE_TWO_TIMES];//再次分配内存 memcpy(NewX, m_nX, m_nMemorySzie);//内存数据拷贝 m_nMemorySzie *= MEMORY_SIZE_TWO_TIMES;//内存大小*2 delete[] m_nX;//删除原有内存 m_nX = NewX;//重新指向新内存 } } template<typename T> bool Vector<T>::judgeMemory()//判断内存是否已满 { return m_nMemorySzie == m_nCount ? true : false; } template<typename T> void Vector<T>::push_back(T nX)//尾部增加 { AllocatedMemory();//内存分配 m_nX[m_nCount++] = nX;//尾部添加 } template<typename T> void Vector<T>::pop_back()//尾部弹出 { m_nCount--;//尾部删除 } template<typename T> T &Vector<T>::at(int pos)//返回pos位置元素的引用 { return m_nX[pos]; } template<typename T> T &Vector<T>::front()//返回首元素的引用 { return *m_nX; } template<typename T> T &Vector<T>::back()// 返回尾元素的引用 { return *(m_nX + m_nCount - true); } template<typename T> T *Vector<T>::begin()//返回向量头指针,指向第一个元素 { return m_nX; } template<typename T> T *Vector<T>::end()// 返回向量尾指针,指向向量最后一个元素的下一个位置 { return m_nX + m_nCount; } template<typename T> T *Vector<T>::rbegin()// 反向迭代器,指向最后一个元素 { return m_nX + m_nCount - true; } template<typename T> T *Vector<T>::rend()// 反向迭代器,指向第一个元素之前的位置 { return m_nX - true; } template<typename T> int Vector<T>::size()//返回个数 { return m_nCount; } template<typename T> T &Vector<T>::operator[](int nNumber) { return m_nX[nNumber]; }
错误信息:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: __thiscall Vector<int>::~Vector<int>(void)" (??1?$Vector@H@@QAE@XZ),该符号在函数 _main 中被引用 vector F:\Code\vector\vector\main.obj 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: __thiscall Vector<int>::Vector<int>(void)" (??0?$Vector@H@@QAE@XZ),该符号在函数 _main 中被引用 vector F:\Code\vector\vector\main.obj 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: void __thiscall Vector<int>::push_back(int)" (?push_back@?$Vector@H@@QAEXH@Z),该符号在函数 _main 中被引用 vector F:\Code\vector\vector\main.obj 1