我正在通过制作一个简单的纸牌游戏来学习数据结构。 在这段代码中,我有一个 Player 类和一个包含游戏中所有玩家的 Queue 。
队列的实现:
template < typename T >
class Queue{
int count;
int front, rear;
T entry[maxsize];
public:
Queue();
bool empty();
errorcode Append(T item);
errorcode serve();
errorcode retreive(T &item);
};
队列构造器:
template <typename T>
Queue<T>::Queue(){
count = 0;
rear = maxsize-1;
front=0;
}
这是Player类:
class Player {
int number;
List<string> set;
public:
Player(int number, List<string> set) {
this->number = number;
this->set = set;
}
void draw();
string play();
.
.
.
};
在主函数中,我使用以下代码声明队列:
Queue<Player> pl;
但是我收到错误消息“没有匹配的函数调用Player :: Player()”,此错误发生在实现队列构造函数的那一行。
答案 0 :(得分:2)
它就是它的意思(与模板无关)。
Queue<Player>
具有成员Player entry[maxsize]
,该成员需要maxsize
Player
对象的默认构造。
但是由于Player
没有默认的构造函数,所以这是不可能的。
How about a nice vector instead?当然,您确实不需要/想要预先分配Player
的最大数量。