Класс player
у вас не содержит явно объявленного деструктора. В то время, как в методе void player::enqueue(int value)
вы выделяете динамическую память. Скорее всего, вы поимеете утечку памяти.
Используйте умные указатели, либо напишите деструктор, который все подчистит.
Сам прототип метода void player::enqueue(int value)
архитектурно не верный. Аргументом должен быть не int. В в зависимости от того, что вы в конечном итоге хотите, вам нужно реализовать либо void player::enqueue(const card&)
, либо void player::enqueue(card&&)
, либо оба сразу.
Вообще работа с сырыми указателями в C++ не самая лучшая идея. Опять таки не зная окончательную задачу сложно говорить, но вам нужно возвращать в player::dequeue()
либо умный указатель либо ссылку на объект либо сам объект. Но не указатель.
Класс card
у вас хранит информацию о следующей карте. Это опять таки не верное архитектурное решение. Этот класс должен быть максимально простым. А очередь должна быть реализована отдельно. Сейчас у вас какое-то странное размазывание логики класса player по двум классам.
Почему бы вам не использовать стандартный контейнер queue
из STL?