在vc6.0下运行此段程序,出现错误,怎么解决?

hzh_shat 2003-02-19 11:18:01
//queuetp.cpp--queue template with a nested class


template<class Item>
class QueueTP
{
private:
enum{Q_SIZE=10};
//Node is a nested class definition
class Node
{
public:
Item item;
Node* next;
Node(const Item& i):item(i),next(0){}
};
Node* front; //pointer to front of Queue
Node* rear; //pointer to rear of Queue
int items; //current number of items in Queue
const int qsize; //maximum number of items in Queue
QueueTP(const QueueTP& q):qsize(0){}
QueueTP& operator=(const QueueTP& q){return* this;}
public:
QueueTP(int qs=Q_SIZE);
~QueueTP();
bool isempty()const
{
return items==0;
}
bool isfull()const
{
return items==qsize;
}
int queuecount()const
{
return items;
}
bool enqueue(const Item* item); //add item to end
bool dequeue(Item& item); //remove item from front
};

//QueuetP methods
template<class Item>
QueueTP<Item>::QueueTP(int qs):qsize(qs)
{
front=rear=0;
items=0;
}
template<class Item>
QueueTP<Item>::~QueueTP()
{
Node* temp;
while(front!=0) //while queue is not yet empty
{
front=front->next; //reset pointer to next item
delete temp; //delete former front
}
}

//Add itemto queue
template<class Item>
bool QueueTP<Item>::enqueue(const Item& item)
{
if(isfull())
return false;
Node* add=new Node(item); //create node
if(add==NULL)
return false; //quit if none available
items++;
if(front==0) //if queue is empty,
front=add; //place item at front
else
rear->next=add; //else place at rear
rear=add; //have rear point to new node
return true;
}

//place front item into item variable and remove from queue
template<class Item>
bool QueueTP<Item>::dequeue(Item& item)
{
if(front==0)
return false;
item=front->item; //set item to first item in queue
items--;
Node* temp=front; //save location of first item
front=front->next; //reset front to next item
delete temp; //delete former first item
if(items==0)
rear=0;
return true;
}


错误提示信息:
error C2244: 'QueueTP<Item>::enqueue' : unable to resolve function overload
error C2954: template definitions cannot nest


谢谢
...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
DesertStorm 2003-02-19
  • 打赏
  • 举报
回复
bool enqueue(const Item* item);
改为
bool enqueue(const Item& item);

这种问题应该自己调试的时候用点心就行了。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧