шаблоны классов 'нет подходящей функции для вызова Player :: Player ()' - PullRequest
0 голосов
/ 29 мая 2019

Я изучаю структуры данных, делая простую карточную игру.В этом коде у меня есть класс 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 Ответ

2 голосов
/ 29 мая 2019

Это то, что он говорит (и имеет мало общего с шаблонами).

Queue<Player> имеет член Player entry[maxsize], для которого требуется конструкция по умолчанию maxsize Player объектов.

Но поскольку Player не имеет конструктора по умолчанию, это невозможно.

Как насчет хорошего вектора вместо этого? Вам действительно не нужно / не нужно выделять максимальное количество Player в начале, конечно же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...