一个关于c++实现链表的问题
新人第一次提问。。。最近想用c++实现一个链表,然而不知道怎么回事总是通不过
求大神来帮我找找原因
以下是代码
//对模板类的声明
template <class T>
class CMyStock
{
public:
CMyStock(T a);
~CMyStock();
//对stock的操作
void AddNextStock();
void AddLastStock();
void DeleteNextStock();
void DeleteLastStock();
void DeleteSelf();
//对date的操作
void print();
protected:
CMyStock* m_pHead;
CMyStock* m_pNext;
private:
T date;
};
template<class T>
CMyStock<T>::CMyStock(T a):
m_pHead(NULL),m_pNext(NULL),date(a)
{
}
template<class T>
CMyStock<T>::~CMyStock()
{
m_pHead = NULL;
m_pNext = NULL;
}
template<class T>
void CMyStock<T>::AddLastStock()
{
CMyStock* pBox(NULL);
if(!m_pHead)
{
CMyStock* pStock = operator new (sizeof(CMyStock));
m_pHead = pStock;
pStock->m_pNext= this;
}
else
{
pBox = m_pHead;
CMyStock* pStock = operator new (sizeof(CMyStock));
m_pHead = pStock;
pStock->m_pHead = pBox;
pStock->m_pNext = this;
pBox->m_pNext = pStock;
}
}
//模板类的定义
template<class T>
void CMyStock<T>::AddNextStock()
{
CMyStock* pBox(NULL);
if(!m_pNext)
{
CMyStock* pStock = operator new (sizeof(CMyStock));
m_pNext = pStock;
pStock->m_pHead = this;
}
else
{
pBox = m_pNext;
CMyStock* pStock = operator new (sizeof(CMyStock));
m_pNext = pStock;
pStock->m_pNext = pBox;
pStock->m_pHead = this;
pBox->m_pHead = pStock;
}
}
template<class T>
void CMyStock<T>::DeleteLastStock()
{
CMyStock* pBox(NULL);
pBox = m_pHead;
m_pHead = m_pHead->m_pHead;
m_pHead->m_pNext = this;
delete pBox;
}
template<class T>
void CMyStock<T>::DeleteNextStock()
{
CMyStock* pBox(NULL);
pBox = m_pNext;
m_pNext = m_pNext->m_pNext;
m_pNext->m_pHead = this;
delete pBox;
}
template<class T>
void CMyStock<T>::DeleteSelf()
{
CMyStock *pLast, *pNext;
pLast = m_pHead;
pNext = m_pNext;
pLast->m_pNext = pNext;
pNext->m_pHead = pLast;
delete this;
}
template<class T>
void CMyStock<T>::print()
{
cout<<date<<endl;
}
//主函数
#include <iostream>
#include "CMyStock.h"
using namespace std;
int main()
{
CMyStock<int> stock(1); /*这里,编译不通过,显示是 undefined reference to
stock.print(); CMyStock<int>::CMyStock(int) */
return 0;
}
不知道这是怎么回事,希望有大神来帮帮忙