一个关于c++实现链表的问题

ccc_lover 2015-07-29 05:40:00
新人第一次提问。。。最近想用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;
}
不知道这是怎么回事,希望有大神来帮帮忙
...全文
63 点赞 收藏 4
写回复
4 条回复
lm_whales 2015年07月29日
C++实现参考标准库list 模板 节点和 链表分离,做成两个类 节点 必要时,可以用来实现 链表的 iterator 链表,只需要实现几个 方法就可以了
回复 点赞
qq_23118143 2015年07月29日
这是双向链表?
回复 点赞
假正经的班长 2015年07月29日
模板类的实现不能放在CPP里。
回复 点赞
aanbpsd 2015年07月29日
实现别放在cpp里
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告