关于c++的队列模板链表实现代码

template
class QueueTp
{
private:
struct Node {T item; struct Node * next;};
enum { Q_SIZE = 10 };//默认队列长度
Node * front;//指向队列首个对象的指针
Node * rear;//队列尾部对象的指针
int items;//队列中的对象个数
const int qsize;//队列长度
QueueTp(const QueueTp & q) :qsize(0) { }//伪私有方法
QueueTp & operator=(const QueueTp & q) { return *this; }//伪私有方法
public:
QueueTp(int qs = Q_SIZE);
~QueueTp();
bool isempty()const;
bool isfull()const;
int queuecount()const;
bool enqueue(const T & item);
bool dequeue(T & item);
};

//不能将模板成员函数放在独立的实现文件中
template
QueueTp::QueueTp(int qs) :qsize(qs)
{
front = rear = NULL;
items = 0;
}

template
QueueTp::~QueueTp()
{
Node * temp;
while (front != NULL)
{
temp = front;
front = front->next;//到这里,front->打出来后显示没有可用成员 怎么回事?
delete temp;
}
}
这几个template后面括号里是写上了的 不知道为什么没显出来

2个回答

Node的定义在哪里?

Tach1banA
whatever-coder 回复caozhy: 我找到原因了 必须在结构体定义前面也加上一句template<class T>但是不知道原理 能解释一下吗
4 年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Tach1banA: 你完整的代码是什么,这样根本不能编译
4 年多之前 回复
Tach1banA
whatever-coder 类的private成员里啊 这原本是是书上的队列代码 我想把它修改成模板队列
4 年多之前 回复

coding style太乱了,首先保证能编译过去吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问