类模板“没有匹配函数可调用Player :: Player()”

时间:2019-05-29 13:11:56

标签: c++ data-structures

我正在通过制作一个简单的纸牌游戏来学习数据结构。 在这段代码中,我有一个 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()”,此错误发生在实现队列构造函数的那一行。

1 个答案:

答案 0 :(得分:2)

它就是它的意思(与模板无关)。

Queue<Player>具有成员Player entry[maxsize],该成员需要maxsize Player对象的默认构造。

但是由于Player没有默认的构造函数,所以这是不可能的。

How about a nice vector instead?当然,您确实不需要/想要预先分配Player的最大数量。